{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "008a665f",
   "metadata": {},
   "source": [
    "\n",
    "### 代码模拟梯度下降"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "2c37e869",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x132fe0f5b50>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGdCAYAAAA44ojeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABLXUlEQVR4nO3deVyUdeIH8M8zMww3g9y3ghfeN0imWZrilaaVmpm1bv0qtcNOdzetttau7TbL7bC2NMvUyi3LzCMVUVG8UUEQkBtkuIS5nt8fA1N4ggLfZ2Y+79drXinzgB+mkfn4ne8hybIsg4iIiEhBVKIDEBEREZ2PBYWIiIgUhwWFiIiIFIcFhYiIiBSHBYWIiIgUhwWFiIiIFIcFhYiIiBSHBYWIiIgURyM6wNWwWCzIy8uDt7c3JEkSHYeIiIiaQJZlVFZWIiwsDCrV5cdI7LKg5OXlITIyUnQMIiIiugo5OTmIiIi47DV2WVC8vb0BWL9BHx8fwWmIiIioKSoqKhAZGWl7Hb8cuywoDW/r+Pj4sKAQERHZmaZMz+AkWSIiIlIcFhQiIiJSHBYUIiIiUhwWFCIiIlIcFhQiIiJSHBYUIiIiUhwWFCIiIlIcFhQiIiJSHBYUIiIiUhwWFCIiIlIcFhQiIiJSHBYUIiIiUhwWlD85kqfHs+sO47vUM6KjEBEROTUWlD/5/WQJ/rvrNL5MzhYdhYiIyKmxoPzJLX3CIEnA7swy5J6tER2HiIjIabGg/EmYrzsGR/sDAL5LzROchoiIyHmxoJzn1n7hAIC1+89AlmXBaYiIiJwTC8p5EnuFQKtRIb2oCkfyKkTHISIickosKOfxcXPBzd2CAQDr9nM1DxERkQgsKBcxqf5tnu8O5MFs4ds8REREbY0F5SJu6BIIXw8XFFfWYWdGieg4RERETocF5SK0GhXG9w4FYJ0sS0RERG2LBeUSGlbz/Hy4ADUGk+A0REREzoUF5RL6R7VDpJ87qg1mbDxaKDoOERGRU2FBuQRJknBrX+soClfzEBERtS0WlMuYWP82z7aTJSipqhOchoiIyHmwoFxGx0Av9InQwWyRsf4At74nIiJqKywoV9CwJ8pans1DRETUZlhQrmB87zCoVRIO5JTjVHGV6DhEREROgQXlCgK9XTG0cwAAYB1HUYiIiNoEC0oTNOyJso4nHBMREbUJFpQmuLl7MDy0amSX1WBfdrnoOERERA6PBaUJPLQaJPYIAcA9UYiIiNoCC0oTNazmWX8wDwaTRXAaIiIix8aC0kTXdfRHoLcrztYYse1Eseg4REREDo0FpYk0ahVu6RMGAFibyrd5iIiIWhMLSjM0rOb59WghKmqNgtMQERE5LhaUZugR5oNOQV6oM1mw4XCB6DhEREQOiwWlGSRJso2irN3Ht3mIiIhaCwtKM03sa52HsiuzFLlnawSnISIickwsKM0U0c4DCTH+kGWOohAREbUWFpSrcNuACADAt/tyufU9ERFRK2BBuQpjeoXAU6tGVmkNUk6fFR2HiIjI4bCgXAUPrQZjeoUCAFan5ApOQ0RE5HhYUK5Sw9s86w/m45zBLDgNERGRY2FBuUpxHfwQ6eeOqjoTfjnKPVGIiIhaEgvKVVKpJEzpbx1F4ds8RERELYsF5Ro0FJTt6SXIKz8nOA0REZHjYEG5BpF+HoiP9rPuibKfe6IQERG1FBaUa2TbEyWFe6IQERG1FBaUazS2Vyg8tGqcKqnGvuxy0XGIiIgcAgvKNfJ01SCxZwgATpYlIiJqKSwoLcC2J8qBPNQauScKERHRtWJBaQGDo/0R7uuOyjoTfjlaKDoOERGR3WNBaQEqlYQpA7gnChERUUthQWkhU/qHAwC2nyxGgb5WcBoiIiL7xoLSQtr7eyKugx8sMrBmP0dRiIiIrgULSgvinihEREQtgwWlBY3tHQp3FzUyiquRmlMuOg4REZHdYkFpQV7cE4WIiKhFNKugLF68GIMGDYK3tzeCgoIwadIkHD9+vNE1tbW1mDNnDvz9/eHl5YUpU6agsLDx0tvs7GyMGzcOHh4eCAoKwpNPPgmTyXTt340CNLzN8wP3RCEiIrpqzSooW7duxZw5c7Br1y5s3LgRRqMRo0aNQnV1te2axx57DD/88AO++eYbbN26FXl5eZg8ebLtfrPZjHHjxsFgMGDnzp347LPPsHz5cixcuLDlviuBEmL8EaZzQ0WtCb8e454oREREV0OSr2E2Z3FxMYKCgrB161YMGzYMer0egYGBWLFiBW677TYAQFpaGrp164akpCQMHjwYP/30E8aPH4+8vDwEBwcDAD744AM8/fTTKC4uhlarveKfW1FRAZ1OB71eDx8fn6uN32r+/ctxvPtbOoZ3DcTye+NExyEiIlKE5rx+X9McFL1eDwDw8/MDAKSkpMBoNGLkyJG2a2JjYxEVFYWkpCQAQFJSEnr16mUrJwAwevRoVFRU4MiRIxf9c+rq6lBRUdHopmRT+lvf5tl2gnuiEBERXY2rLigWiwWPPvoohgwZgp49ewIACgoKoNVq4evr2+ja4OBgFBQU2K75czlpuL/hvotZvHgxdDqd7RYZGXm1sdtEh4A/9kT5dh8nyxIRETXXVReUOXPm4PDhw/jqq69aMs9FLViwAHq93nbLyclp9T/zWk0dZC1Rq/bkwGLhnihERETNcVUFZe7cuVi/fj02b96MiIgI28dDQkJgMBhQXl7e6PrCwkKEhITYrjl/VU/D7xuuOZ+rqyt8fHwa3ZRubK9QeLtqkF1Wg12nSkXHISIisivNKiiyLGPu3LlYu3YtfvvtN0RHRze6f8CAAXBxccGmTZtsHzt+/Diys7ORkJAAAEhISMChQ4dQVFRku2bjxo3w8fFB9+7dr+V7URR3rRoT+4UBAL7ao/wRHyIiIiVpVkGZM2cOvvjiC6xYsQLe3t4oKChAQUEBzp07BwDQ6XSYPXs25s+fj82bNyMlJQX33nsvEhISMHjwYADAqFGj0L17d8ycORMHDhzAzz//jH/84x+YM2cOXF1dW/47FGjaoCgAwIbDBThbbRCchoiIyH40q6AsXboUer0ew4cPR2hoqO22atUq2zVvvvkmxo8fjylTpmDYsGEICQnBmjVrbPer1WqsX78earUaCQkJuOuuu3D33XfjhRdeaLnvSiF6huvQI8wHBrMF61LPiI5DRERkN65pHxRRlL4Pyp99npSFhd8dQddgb2x4dCgkSRIdiYiISIg22weFrmxin3C4alQ4XliJA7l60XGIiIjsAgtKK9N5uGBsr1AAwKo92YLTEBER2QcWlDbQsCfK96l5qK5zjEMRiYjIMR3K1WPWJ7vx61Gx58mxoLSB+Gg/dPD3QLXBjP8dzBcdh4iI6JJW7M7G1hPF+OFgntAcLChtQJIkTK1fcrxqL/dEISIiZaqqM+H7+lWn0+OihGZhQWkjUwaEQ62SkHL6LE4WVoqOQ0REdIEfDuSh2mBGTIAn4qP9hGZhQWkjQd5uGBEbBMB6Pg8REZHSrNxtXcwxPS5K+LYYLChtqGGy7Jr9Z1BnMgtOQ0RE9IfDZ/Q4mKuHVq3ClAERV/6EVsaC0oZu6BKIYB9XlFUb8OvRoit/AhERURtpGD0Z1SMYfp5awWlYUNqURq3C7QOsoyhfcU8UIiJSiOo6E75Lta7auVPw5NgGLCht7I6B1oKyPb0EOWU1gtMQEREB6w/moarOhA7+Hhgc4y86DgAWlDYX5e+BIZ38IcvANym5ouMQERFhxW7r4o1pcVFQqZRxZhwLigANe6J8szcHZovdndVIREQO5GheBQ7klMNFLeE2BUyObcCCIsCo7sHw9XBBvr4W204Wi45DREROrGFO5KjuIQjwchWc5g8sKAK4uahxa79wAMCq3dwThYiIxDhnMGPtPmXsHHs+FhRBGvZE+fVYIYor6wSnISIiZ7T+YB4q60yI8vPAdR2VMTm2AQuKILEhPugb6QuTRcZqTpYlIiIBGvY+mRYXqZjJsQ1YUAS6M946nLZi92lYOFmWiIjaUFpBBfZll0OjUtbk2AYsKAJN6B0GHzcNcsrOcbIsERG1qa/q50CO7BaMIG83wWkuxIIikLtWbTvv4Mtk7ixLRERto9Zoxpp91ukF0+OVNTm2AQuKYDPqnxibjhUir/yc4DREROQMfjyUj4paE8J93TG0U4DoOBfFgiJYpyBvDI7xg0UGvtrDJcdERNT6GibHTlfg5NgGLCgKMCO+PQDgq93ZMJotgtMQEZEjO1lYiT1ZZ6FWSbi9/nw4JWJBUYDRPUIQ4KVFUWUdNh0rFB2HiIgc2Mr6ybEjYoMQ7KO8ybENWFAUQKtR2U455mRZIiJqLbVGM75V+OTYBiwoCjE9LgqSBPx+sgSZJdWi4xARkQPacLgA+nNGhPu6Y1jnQNFxLosFRSEi/TwwvIv1ydIweYmIiKglfZl8GgBwx8BIqBU6ObYBC4qCNEyW/WZvDmqNZsFpiIjIkRzLr7BNjp0Wp9zJsQ1YUBTkxtgghOnccLbGiJ8O54uOQ0REDuS/u6yjJ6N7BCt6cmwDFhQFUask23HXX+7i2zxERNQyKmqNWLf/DABg5uAOYsM0EQuKwkwdFAmNSsLe02eRVlAhOg4RETmANSm5qDGY0TnIC4Nj/ETHaRIWFIUJ8nHDqB7BADiKQkRE106WZdvbOzMT2kOSlD05tgELigI1TJZdu/8MqutMgtMQEZE9S8ooRUZxNTy1atzaL1x0nCZjQVGghBh/RAd4oqrOhO9S80THISIiO9YwenJr/3B4u7kITtN0LCgKpFJJtlOOv0w+DVmWBSciIiJ7lK8/h1+OWo9QsZfJsQ1YUBRqSv8IaDUqHMmrQGpOueg4RERkh1buzoHZIiMu2g9dQ7xFx2kWFhSFauepxfjeoQB4Pg8RETWfwWSx7Ux+d0J7wWmajwVFwRomy/5wIA/6GqPgNEREZE9+OVqA4so6BHq7YlT3ENFxmo0FRcH6R/kiNsQbdSYLvknJER2HiIjsyOdJ1smx0+OioNXY38u9/SV2IpIkYWb9sNx/d52GxcLJskREdGXHCyqxO7MMapWEO+t3KLc3LCgKd2u/cPi4aXC6tAZbThSJjkNERHbgv7uyAACjugcjRKf8c3cuhgVF4Ty0Gtwx0Hrq5PKdpwWnISIipausNWLtvoZzd+xvcmwDFhQ7cHdCB0gSsO1EMTKKq0THISIiBVu7/wyqDWZ0DPREQkd/0XGuGguKHYjy98CI2CAAwOc7s8SGISIixZJl2TY5duZg+zl352JYUOzErOs6AABWp+SispZLjomI6EK7TpUhvagKHlo1Jg+IEB3nmrCg2InrOwWgU5AXqg1mfJuSKzoOEREpUMPk2En9wuFjR+fuXAwLip2QJAmz6pccf5bEJcdERNRYYUUtfj7ScO6O/U6ObcCCYkcm94+At6sGmSXV2HayWHQcIiJSkBXJ2TBbZAzq0A7dQn1Ex7lmLCh2xNNVg9vrlxx/xsmyRERU78/n7sxM6CA2TAthQbEzdye0hyQBm48XI7OkWnQcIiJSgB8P5aOo/tydxB72d+7OxbCg2JkOAZ4Y3iUQAPB5UpbYMEREJJwsy/hkRyYA4O7B7e3y3J2LcYzvwsnYlhzvzUV1nUlsGCIiEmpf9lkczNVDq1Hhznj7PHfnYlhQ7NCwzoGICfBEZZ0Ja/ZxyTERkTP7ZHsWAODWvuHw93IVG6YFsaDYIZVKwt31S46X78yCLHPJMRGRMzpTfg4bjhQAAO69voPYMC2MBcVOTRkQAU+tGhnF1dieXiI6DhERCfB5UhbMFhnXdfRHbIj9Ly3+MxYUO+Xt5sIlx0RETqzGYMLKZOvS4r8MiRacpuU1u6Bs27YNEyZMQFhYGCRJwrp16xrdf88990CSpEa3xMTERteUlZVhxowZ8PHxga+vL2bPno2qKp7S21wNb/NsSitCdmmN4DRERNSWvt13BhW1JrT398BN9QfKOpJmF5Tq6mr06dMHS5YsueQ1iYmJyM/Pt91WrlzZ6P4ZM2bgyJEj2LhxI9avX49t27bh/vvvb356JxcT6IVhXQIhy1xyTETkTCwWGcvrlxbfc10HqFT2e2rxpWia+wljxozBmDFjLnuNq6srQkIuvlHMsWPHsGHDBuzZswcDBw4EALz77rsYO3YsXn/9dYSFhTU3klO757r22HaiGF/vzcH8UV3goW32/1IiIrIz204WI6O4Gt5/2mHc0bTKHJQtW7YgKCgIXbt2xYMPPojS0lLbfUlJSfD19bWVEwAYOXIkVCoVkpOTWyOOQxveJQjt/T1QUWvCmn1nRMchIqI28MmOLADA7QMj4eXqmP8wbfGCkpiYiM8//xybNm3CK6+8gq1bt2LMmDEwm80AgIKCAgQFNX6vTKPRwM/PDwUFBRf9mnV1daioqGh0IyvrkuMOAKxLjnnKMRGRY0svqsS2E8WQJOvbO46qxQvKtGnTcMstt6BXr16YNGkS1q9fjz179mDLli1X/TUXL14MnU5nu0VGOuZw1tW6Y6D1lOP0oipsPcFTjomIHNmn9aMnN3cLRpS/h9gwrajVlxnHxMQgICAA6enpAICQkBAUFRU1usZkMqGsrOyS81YWLFgAvV5vu+Xk5LR2bLvi7eaCaXHW0vaf308JTkNERK2lvMaAb+t3EL/XAZcW/1mrF5Tc3FyUlpYiNDQUAJCQkIDy8nKkpKTYrvntt99gsVgQHx9/0a/h6uoKHx+fRjdq7J4h0VCrJOzMKMWRPL3oOERE1Aq+2pODWqMF3UJ9MDjGT3ScVtXsglJVVYXU1FSkpqYCADIzM5Gamors7GxUVVXhySefxK5du5CVlYVNmzZh4sSJ6NSpE0aPHg0A6NatGxITE3Hfffdh9+7d2LFjB+bOnYtp06ZxBc81CPd1x9he1hL48e+ZgtMQEVFLM5otto05/zKkAyTJ8ZYW/1mzC8revXvRr18/9OvXDwAwf/589OvXDwsXLoRarcbBgwdxyy23oEuXLpg9ezYGDBiA33//Ha6ufxxg9OWXXyI2NhYjRozA2LFjcf3112PZsmUt9105qfuGWof7vj+QhwJ9reA0RETUkn4+UoB8fS38PbWY0Mfx/0Hf7LVJw4cPv+zhdD///PMVv4afnx9WrFjR3D+arqB3hC/iOvhhd1YZPkvKwtOJsaIjERFRC/lku3V0fMbg9nBzUQtO0/p4Fo+D+Wv9KMqXu06jus4kOA0REbWE1Jxy7Msuh4tawl2Do0THaRMsKA5mZLdgRAd4oqLWhG/2crUTEZEj+LR+W/sJvcMQ5O0mOE3bYEFxMCqVhL9cbx1F+WSH9RhuIiKyX/n6c/jfwXwAjr+0+M9YUBzQbf0j4OvhguyyGmw8evHdeYmIyD58uiMLJouMuGg/9IrQiY7TZlhQHJC7Vo274tsDAP7DJcdERHarotaIFcnZAIAHbogRnKZtsaA4qLuvaw+tWoWU02exL/us6DhERHQVViZno6rOhM5BXhjeJejKn+BAWFAcVJC3G27pa10nz43biIjsj8FkwSf1k2PvGxYDlcqxN2Y7HwuKA2tYcvzT4XzklNUITkNERM3xXeoZFFbUIdjHFRP7Ov7GbOdjQXFgsSE+GNo5ABb5j9MviYhI+SwW2Xb4671DouGqcfyN2c7HguLg/jrUOqlq1Z5s6M8ZBachIqKm2HKiCCcKq+DlqsGd8c6xMdv5WFAc3LDOAega7I1qgxlf7c4WHYeIiJrgw63W0ZM746Pg4+YiOI0YLCgOTpIkzK6fi7J8ZxaMZovgREREdDkHcsqRnFkGjUrCvUM6iI4jDAuKE5jYNwwBXq7I19fix0P5ouMQEdFlLNtmHT25pW8YQnXugtOIw4LiBFw1asxKsG7ctmzbqcueRk1EROKcLq3GT4et/5C8f5hzbcx2PhYUJ3HX4PZwd1HjSF4Ffj9ZIjoOERFdxEe/Z8IiA8O7BiI2xEd0HKFYUJxEO08tpsVFAgCWbskQnIaIiM5XWlWHb1Ksp9A7++gJwILiVO4bGgMXtYSkU6XYz+3viYgU5fOk06g1WtA7QoeEGH/RcYRjQXEiYb7umNQ3HADwPkdRiIgU45zBjM+TsgBYR08kybm2tb8YFhQn8383dIQkARuPFuJkYaXoOEREBGB1Sg7O1hgR6eeOxB4houMoAguKk+kU5IXR3a1P/qVbOYpCRCSa2SLjP/WHut43NAYaNV+aARYUp/Tg8I4AgO9T85B7locIEhGJtOFwAbLLatDOwwW3D4gUHUcxWFCcUJ9IXwzp5A+TRcZH9a2diIjanizLWLbNOpo9M6ED3LXOdyjgpbCgOKmHhncCAHy1JxulVXWC0xAROaddp8pwIFcPV43KtqEmWbGgOKnrOvqjT4QOtUYLPt2RJToOEZFTWrI5HQBwx8BI+Hu5Ck6jLCwoTkqSJDxYP4ryeVIWKmuNghMRETmX/dlnsT29BBqVhP+7gRuznY8FxYmN6h6MjoGeqKg1YUVytug4REROpWH05NZ+4Yho5yE4jfKwoDgxlUrCAzdYV/R8tD0TtUaz4ERERM7hSJ4evx4rgkr6Y2UlNcaC4uQm9g1HmM4NxZV1+HZfrug4RERO4f3N1pU743uHISbQS3AaZWJBcXJajQp/HWp97/PDradgMlsEJyIicmzpRVX48XA+AGDOjZ0Ep1EuFhTCtLhItPNwQXZZDX48XCA6DhGRQ3t/Szpk2ToPsGuIt+g4isWCQvDQanDvkGgAwNItGZBlWXAiIiLHlFNWg+9S8wAAc2/i6MnlsKAQAODuhPbw1KpxLL8CW04Ui45DROSQlm7NgNkiY1iXQPSO8BUdR9FYUAgA4OuhxZ3xUQCApZt5iCARUUsr0Ndi9V7rYoS5nHtyRSwoZPPXoTHQqlXYnVWG5FOlouMQETmUZdtOwWC2IC7aD3HRfqLjKB4LCtkE+7jh9oERAIC3N50UnIaIyHGUVNVhxe7TADh60lQsKNTIQzd2gotaws6MUuzOLBMdh4jIIXyyPRO1Rgv6ROgwtHOA6Dh2gQWFGgn3dcftAyMBAG9vOiE4DRGR/dPXGPF5knX0ZM6NnSBJkuBE9oEFhS7w0PCOcFFL2JFeir1ZHEUhIroWnyVloarOhNgQb4zsFiw6jt1gQaELRLTzwG0DOBeFiOhaVdeZ8MmOTADW0ROViqMnTcWCQhf10PBO0Kgk/H6yBCmnOYpCRHQ1vkw+jfIaI2ICPDG2V6joOHaFBYUuKtLvj1GUt37lKAoRUXPVGs1Yts06evLg8I5Qc/SkWVhQ6JLm3PjnUZSzouMQEdmVVXtyUFJVh3Bfd0zqFy46jt1hQaFLivTzwOT+1r9UnItCRNR0tUYzlmxOB2AdPXFR8+W2ufiI0WXNvbEz1CoJ204UY382R1GIiJrii12nUVRpHT25o37rBmoeFhS6rCh/D0zux1EUIqKmqjGY8MFW65lmD4/oBK2GL7VXg48aXdHcmzpBrZKw5XgxUnPKRcchIlK0z5NOo6TKgCg/D0zuHyE6jt1iQaErau/viUl960dRfuXuskREl1JVZ8KH9aMnj4zozLkn14CPHDXJvPpRlM3Hi3GAoyhERBe1fEcmztbvezKxb5joOHaNBYWapMOf/rK9w7koREQXqKg1Ytm2UwCAR0Z2hoajJ9eEjx412bybOkMlAZvSinAwt1x0HCIiRfn490xU1JrQOcgL43tz9ORasaBQk0UH/DEXhaMoRER/KK8x4JPt1l1jHx3ZhbvGtgAWFGqWuTd1gkoCfj1WhEO5etFxiIgU4T+/n0Jl/YnFY3qGiI7jEFhQqFliAr0wsX4U5bVfjgtOQ0QkXlm1AZ/uyAIAPHZzF55Y3EJYUKjZHh3ZGZr63WV3nSoVHYeISKgPt2agxmBGz3AfjOoeLDqOw2BBoWZr7++JaXHWrZtf3ZAGWZYFJyIiEqO4sg6fJWUBAObf3AWSxNGTlsKCQlfl4Zs6w81FhX3Z5fgtrUh0HCIiIZZuyUCt0YK+kb64sWuQ6DgOhQWFrkqQjxtmXdcBAPDaz8dhsXAUhYicS2FFLb5IPg2AoyetodkFZdu2bZgwYQLCwsIgSRLWrVvX6H5ZlrFw4UKEhobC3d0dI0eOxMmTjZeklpWVYcaMGfDx8YGvry9mz56Nqqqqa/pGqO09eENHeLtpkFZQiR8O5omOQ0TUppZsTofBZMGgDu0wtHOA6DgOp9kFpbq6Gn369MGSJUsuev+rr76Kd955Bx988AGSk5Ph6emJ0aNHo7a21nbNjBkzcOTIEWzcuBHr16/Htm3bcP/991/9d0FC+Hpo8X/DYgAAb2w8AaPZIjgREVHbOFN+Dl/tzgFgXbnD0ZOWJ8nXMMNRkiSsXbsWkyZNAmAdPQkLC8Pjjz+OJ554AgCg1+sRHByM5cuXY9q0aTh27Bi6d++OPXv2YODAgQCADRs2YOzYscjNzUVY2JV336uoqIBOp4Ner4ePj8/VxqcWUF1nwg2vbUZJlQEv3doTM+Lbi45ERNTqFqw5iJW7c5AQ44+V9w8WHcduNOf1u0XnoGRmZqKgoAAjR460fUyn0yE+Ph5JSUkAgKSkJPj6+trKCQCMHDkSKpUKycnJF/26dXV1qKioaHQjZfB01WDOjZ0AWHeXrTWaBSciImpd6UVV+HpvLgDg8VFdBKdxXC1aUAoKCgAAwcGN14EHBwfb7isoKEBQUOOZzhqNBn5+frZrzrd48WLodDrbLTIysiVj0zW6Mz4K4b7uKKyow+f1y+2IiBzVaz+nwWyRMbJbMAZ28BMdx2HZxSqeBQsWQK/X2245OTmiI9GfuGrUeHRkZwDA+1syUFFrFJyIiKh1pJw+i5+PFEIlAU8ndhUdx6G1aEEJCbGeP1BYWNjo44WFhbb7QkJCUFTUeN8Mk8mEsrIy2zXnc3V1hY+PT6MbKcut/cLRMdAT5TVGfFR/3DgRkSORZRmv/JQGALh9QCQ6B3sLTuTYWrSgREdHIyQkBJs2bbJ9rKKiAsnJyUhISAAAJCQkoLy8HCkpKbZrfvvtN1gsFsTHx7dkHGpDGrUKT4yy/mvio+2ZKKmqE5yIiKhl/ZZWhN1ZZXDVqPDozZ1Fx3F4zS4oVVVVSE1NRWpqKgDrxNjU1FRkZ2dDkiQ8+uijePHFF/H999/j0KFDuPvuuxEWFmZb6dOtWzckJibivvvuw+7du7Fjxw7MnTsX06ZNa9IKHlKuxJ4h6B2hQ43BjPc3Z4iOQ0TUYswWGa9ssI6e/OX6aITq3AUncnzNLih79+5Fv3790K9fPwDA/Pnz0a9fPyxcuBAA8NRTT2HevHm4//77MWjQIFRVVWHDhg1wc3OzfY0vv/wSsbGxGDFiBMaOHYvrr78ey5Yta6FviUSRJAlPjraOonyx6zTOlJ8TnIiIqGV8uy8XJwqroHN3wQM3dBQdxylc0z4oonAfFOWSZRnT/7MLu06V4Y6BEXj1tj6iIxERXZNaoxk3vr4F+fpa/H1sN9xXv0ElNZ+wfVCIJEnCU4mxAIDVKblIL+IRBkRk35bvzEK+vhbhvu6YmcDNKNsKCwq1uP5R7TCyWzAsMvBq/Xu2RET2qLzGgPc3pwOwHgjo5qIWnMh5sKBQq3g6sSvUKgm/HC3ErlOlouMQEV2VpVsyUFFrQmyINyb1Cxcdx6mwoFCr6BzsjWmDrDv+/uvHY7BY7G6qExE5uTPl5/DpziwAwNOJsVCreCBgW2JBoVbz2M1d4OWqwcFcPb4/kCc6DhFRs7y58QQMJgsGx/hheNdA0XGcDgsKtZoAL1c8ONy6HO/VDWk8SJCI7EZaQQW+3Wc9EPCZMd0gSRw9aWssKNSqZl8fjXBfd+Tpa/Hx9kzRcYiImuTVDcchy8DYXiHoG+krOo5TYkGhVuXmorZt3rZ0Swa3wCcixdt1qhS/pRVBrZLw5OhY0XGcFgsKtbpb+oShd4QOVXUmvLnxhOg4RESXZLHIWFx/IOD0uEhEB3gKTuS8WFCo1alUEv4xrjsAYOXubJwsrBSciIjo4r47cAYHcsrhqVXj4RE8EFAkFhRqE3HRfhjdw7p5279+PCY6DhHRBWoMJrzy03EAwEM3dkKQt9sVPoNaEwsKtZmnE2OhUUnYfLwY20+WiI5DRNTIB1syUFBRi0g/d8y+Plp0HKfHgkJtJibQC3cNtp5j8eL/jsLMzduISCFyz9bgw22nAAB/G9ONW9orAAsKtalHRnSGj5sGaQWV+DYlV3QcIiIAwMs/paHOZEF8tB8Se4aIjkNgQaE21s5Ti3k3WSeevf7LcVTXmQQnIiJntyerDOsP5kMlAQsndOembArBgkJt7u7r2iPKzwNFlXVYVj+kSkQkgsUi44UfjgIApg6KQo8wneBE1IAFhdqcq0aNpxOtmx8t23YKhRW1ghMRkbNavS8Xh87o4e2qweOjuoiOQ3/CgkJCjO0VggHt2+Gc0YxXNxwXHYeInFBVnQmv/Wz9+fPwiM4I8HIVnIj+jAWFhJAkCf8Y1w0A8O2+XKScPis4ERE5myWb01FcWYfoAE/Muq6D6Dh0HhYUEqZfVDvcPiACALDo+8NcdkxEbSa7tAYf/249wPTvY7tBq+HLodLw/wgJ9fSYWHi7aXD4TAVW7s4WHYeInMRLPx6FwWzB0M4BGNEtSHQcuggWFBIqwMsVj99snZj2+i/HcbbaIDgRETm6nRkl+PlIIdQqCc+O57JipWJBIeHuGtwesSHeKK8x4rVfOGGWiFqP+U/LimfER6FLsLfgRHQpLCgknEatwgsTewKwnnZ8MLdcbCAiclhf7clGWkEldO4ueGwklxUrGQsKKUJctB8m9Q2DLAMLvzsCCyfMElEL09cY8e9fTgAAHhvZGe08tYIT0eWwoJBi/G1sN3hq1UjNKcdqntNDRC3s1Z/TUFZtQOcgL8yoP7iUlIsFhRQjyMcNj9YPub6yIQ36GqPgRETkKFJzyrGifqXgPyf1hIuaL39Kx/9DpCj3DOmATkFeKK024M1fT4iOQ0QOwGS24O9rD0GWgcn9wzE4xl90JGoCFhRSFBe1Cs/f0gMA8HlSFo7mVQhORET27r+7TuNIXgV07i7429huouNQE7GgkOIM6RSAcb1CYZGtO8zKMifMEtHVKayotU2MfSqxK8/bsSMsKKRIfx/XDe4uauzJOot1qWdExyEiO/XP9UdRVWdC30hfTB8UJToONQMLCilSmK875t7UCQDwrx/TUFnLCbNE1Dy/nyzG+oP5UEnAi5N6QqXijrH2hAWFFOuvQ6MRHeCJ4so6vP3rSdFxiMiO1BrNeHbdYQDArOs6oGe4TnAiai4WFFIsV40aiyZ0BwB8ujMLh8/oBSciInvxwdYMZJXWINjHFfNv5o6x9ogFhRRteNcgjOsVCrNFxoI1h2AyW0RHIiKFyyypxvtbMgAAz47vDm83F8GJ6GqwoJDiLbqlO3zcNDh0Ro/lO7NExyEiBZNlGQu/OwyDyYKhna0rAsk+saCQ4gV5u9n2Lvj3LyeQU1YjOBERKdX6g/n4/WQJtBoV/jmxJySJE2PtFQsK2YWpgyIRH+2Hc0Yz/r6Oe6MQ0YUqa4345/qjAICHhndEhwBPwYnoWrCgkF2QJAmLJ/eCVqPCthPF+C41T3QkIlKYf/9yAkWVdejg74EHbugoOg5dIxYUshsxgV54uH5vlBfWH0VZtUFwIiJSikO5enyelAXAehigm4tabCC6ZiwoZFfuH9YRXYO9UVZtwIv/Oyo6DhEpgMFkwZOrD8AiAxP6hGFo50DRkagFsKCQXdFqVHh5Si9IErBm3xn8frJYdCQiEuz9LelIK6iEn6cWz9XvnUT2jwWF7E6/qHaYldABAPC3tYdQYzCJDUREwhzLr8B7v6UDAJ6/pQf8eRigw2BBIbv0xOiuCNO5IafsHN7iNvhETslktuCp1QdhssgY1T0Y43tzzxNHwoJCdsnLVYN/TuoJAPjo91PcBp/ICS37/RQOndFD5+6CFydxzxNHw4JCdmtEt2CM6x0Kiww8/e1BboNP5ETSiyrx1kbr6OnC8d0R5OMmOBG1NBYUsmvPTegBnbsLjuRV4JMdmaLjEFEbMFtkPLn6IAxmC4Z3DcTk/uGiI1ErYEEhuxbo7Yq/12+D/8bGE8gsqRaciIha26c7MrE/uxxerhr869ZefGvHQbGgkN27fWAEhnTyR63Rgse/TuVbPUQOLLOkGq/9fBwA8Pdx3RDm6y44EbUWFhSye5Ik4dXb+sDbVYN92eX4cNsp0ZGIqBVYLDKe/vYg6kwWDOnkj2mDIkVHolbEgkIOIdzXHYtu6QEAeOvXEziaVyE4ERG1tC+ST2N3Zhk8tGq8PLk339pxcCwo5DCm9A/Hzd2DYTTLmP91KupMZtGRiKiF5JTV4OWf0gAATyfGItLPQ3Aiam0sKOQwGk489vfUIq2gkhu4ETkIWZaxYM0h1BjMiOvgh5mD24uORG2ABYUcSoCXK166tRcA4MOtGUg5XSY4ERFdqxW7s7E9vQSuGhVeua03VCq+teMMWFDI4ST2DMHk/uGwyMD8rw/wrB4iO3aquAovrj8GAHhydFdEB3gKTkRthQWFHNKiCT0QqnPD6dIaLP4xTXQcIroKBpMFj3yVinNGM67r6I+/DIkWHYnaEAsKOSSduwteu60PAOC/u05j24liwYmIqLne+vWE7aydf9/Rh2/tOJkWLyjPPfccJElqdIuNjbXdX1tbizlz5sDf3x9eXl6YMmUKCgsLWzoGEa7vHIBZCdbJdE+tPgh9jVFwIiJqql2nSrF0awYA4OXJvRCq44ZszqZVRlB69OiB/Px822379u22+x577DH88MMP+Oabb7B161bk5eVh8uTJrRGDCM+M6YboAE8UVNRi0feHRcchoibQnzNi/qpUyDJwx8AIjOkVKjoSCdAqBUWj0SAkJMR2CwgIAADo9Xp8/PHHeOONN3DTTTdhwIAB+PTTT7Fz507s2rWrNaKQk3PXqq1DwxKwLjUPPx7KFx2JiC5DlmX8Y91h5Olr0d7fA4sm9BAdiQRplYJy8uRJhIWFISYmBjNmzEB2djYAICUlBUajESNHjrRdGxsbi6ioKCQlJV3y69XV1aGioqLRjaip+ke1w4PDOwIA/r72EIoqagUnIqJLWZd6Bj8cyINaJeGtqX3h6aoRHYkEafGCEh8fj+XLl2PDhg1YunQpMjMzMXToUFRWVqKgoABarRa+vr6NPic4OBgFBQWX/JqLFy+GTqez3SIjef4CNc8jI7qge6gPztYY8eiqVJgtsuhIRHSenLIaPLvuCADgkRGd0S+qneBEJFKLF5QxY8bg9ttvR+/evTF69Gj8+OOPKC8vx9dff33VX3PBggXQ6/W2W05OTgsmJmeg1ajwzvR+cHdRY2dGKd7fnC46EhH9iclswaOrUlFVZ8LA9u3wUP2oJzmvVl9m7Ovriy5duiA9PR0hISEwGAwoLy9vdE1hYSFCQkIu+TVcXV3h4+PT6EbUXJ2CvPDPST0BAG/+egLJp0oFJyKiBu9vyUDK6bPwdtXgzal9oVFzFwxn1+rPgKqqKmRkZCA0NBQDBgyAi4sLNm3aZLv/+PHjyM7ORkJCQmtHIcJtAyJsu8w+8lUqyqoNoiMROb192Wfx9ibr2VkvTOrBgwAJQCsUlCeeeAJbt25FVlYWdu7ciVtvvRVqtRrTp0+HTqfD7NmzMX/+fGzevBkpKSm49957kZCQgMGDB7d0FKKL+ufEnogJtC49fuKbA7BwPgqRMFV1JjxWPy/slj5hmNQ3XHQkUogWLyi5ubmYPn06unbtijvuuAP+/v7YtWsXAgMDAQBvvvkmxo8fjylTpmDYsGEICQnBmjVrWjoG0SV5umqw5M7+0GpU+C2tCB9vzxQdicgpybKMhd8dxunSGoT7uuOfk3pCkrhbLFlJsizb3T8fKyoqoNPpoNfrOR+FrtoXu07jH+sOQ6OS8M0DCVwxQNTGVu7OxoI1h6CSgJX3DUZ8jL/oSNTKmvP6zVlI5LRmxEdhXK9QmCwy5q3cD/05boVP1FYOn9Fj0ffWJcVPjo5lOaELsKCQ05IkCYun9EKknztyz57DM98ehB0OKBLZHX2NEQ98kQKDyYKR3YLwf8NiREciBWJBIafm4+aC96b3h4tawk+HC/DFrtOiIxE5NItFxvyvU5F79hwi/dzx79v78pRiuigWFHJ6fSJ98XSi9cTtf64/hiN5esGJiBzX0q0Z2JRWBK1GhaUzBkDn4SI6EikUCwoRgNnXR2NEbBAMZgvmrdiPqjqT6EhEDmdnRgn+/ctxAMALt/RAz3Cd4ESkZCwoRLDOR3n99j4I1bnhVEk1nlp9gPNRiFpQgb4WD6/cD4ts3TBx6iCeqUaXx4JCVK+dpxbv3dkPLmoJPx4qwPtbMkRHInIIRrMFc1fsQ0mVAbEh3vjnRO53QlfGgkL0JwPa++H5W6zn9bz+y3H8llYoOBGR/XvlpzTsrT9n54O7BsBdqxYdiewACwrRee6Mj8Kd8VGQZeCRlanIKK4SHYnIbv10KB8f1e/W/NrtfdAhwFNwIrIXLChEF/HchB4Y1KEdKutMuO/zvaio5SZuRM11qrgKT64+CAC4f1gMEnte+tR6ovOxoBBdhFajwvszBiDExw2niqvx2FepPFSQqBkqa62bsVXVmRDXwQ9Pje4qOhLZGRYUoksI9HbFsrsHQKtRYVNaEd789YToSER2wWyR8fDK/ThRWIVAb1e8d2c/aNR8uaHm4TOG6DJ6R/ji5cm9AADv/paOnw7lC05EpHwv/e8YNh8vhqtGhY/uHoggHzfRkcgOsaAQXcHk/hGYfX00AODxbw4graBCcCIi5VqRnI1Pdlgnxb5xR1/0ifQVG4jsFgsKURMsGBOLIZ38UWMw477P9+JstUF0JCLF2ZFegoXfHQYAPH5zF4zrHSo4EdkzFhSiJtCoVXhven9E+rkjp+wc5q3cD5PZIjoWkWJkFFfhwS9SYLLImNQ3DHNv6iQ6Etk5FhSiJmrnqcWymQPh7qLG9vQSvPi/Y6IjESlCeY0Bf/1sLypqTegf5YuXp/TmTrF0zVhQiJqhW6gP/n1HHwDA8p1Z+Oj3U4ITEYllMFnw4Bf7kFlSjXBfdyy7eyDcXLhTLF07FhSiZhrbKxTPjIkFALz4v2P44UCe4EREYsiyjIXfHUbSqVJ4atX4+J6BCPByFR2LHAQLCtFV+L9hMZiV0B4A8PjXB5CUUSo4EVHb+3h7Jr7akwOVBLx7Zz/EhviIjkQOhAWF6CpIkoSFE3pgdI9gGMwW3P/fvThRWCk6FlGb+fVoIV760ToP6+/juuOm2GDBicjRsKAQXSW1SsLb0/phYPt2qKw1YdYnu1GgrxUdi6jVHcgpx8Nf7YcsA9PjovCXIR1ERyIHxIJCdA3cXNT4z90DERPoiXx9Le75dDcPFiSHdrKwEvd8uhs1BjOu7xSAFyb24IodahUsKETXqJ2nFp/dG4dAb1ekFVTigf+mwGDiHinkeHLP1mDmx7txtsaIPpG++GDmALjwjB1qJXxmEbWASD8PfHrPIHhq1diZUYonVx/g6cfkUIor6zDz490oqKhF5yAvLL9nELxcNaJjkQNjQSFqIT3DdVh61wBoVBK+S83Dqz8fFx2JqEVU1Box65Pdtr1O/js7Hu08taJjkYNjQSFqQcO6BOLlKb0BAB9szcDy+kPTiOxVrdGMvy7fi6P5FQjw0uKLv8YjRMfTian1saAQtbDbBkTgiVFdAADP/XAUX+/JEZyI6OoYzRY89OU+7M4qg7erBp/9JQ7RAZ6iY5GTYEEhagVzbuyEe+uXXj695iBWp+SKDUTUTBaLjCe/OYDf0orgqlHh43sGoUeYTnQsciIsKEStQJIkLBzfHXcntIcsA0+uPoB1+8+IjkXUJLIs44X1R7EuNQ8alYSld/VHXLSf6FjkZFhQiFqJJEl4bkIP3BkfBVkG5n+dynN7yC689etJLN+ZBUkC/n1HH+4SS0KwoBC1IpVKwosTe2LqwEhYZODRVan46VC+6FhEl7Rkczre3nQSAPD8LT0wsW+44ETkrFhQiFqZSiVh8eRemNI/AmaLjHkr9+OXIwWiYxE1Issy3th4Aq/VL49/YlQX3J3QQWwocmosKERtQKWS8OptvTGpbxhMFhlzVuzDpmOFomMRAbCWk5c3pOGd+pGTZ8bEYu5NnQWnImfHgkLURtQqCa/f3gfje4fCaJbx4Bf7sOV4kehY5ORkWcbzPxzFh1tPAQAWTeiOB27oKDgVEQsKUZvSqFV4a2pfjO0VAoPZgvv/m4LfTxaLjkVOymKR8fd1h7F8ZxYA4KVbe+LeIdFiQxHVY0EhamMatQpvT+uHUd2DYTBZ8NfP9nJOCrU5s0XGk6sPYkVyNlQS8PrtfTAjvr3oWEQ2LChEArioVXjvzv64uXsw6kwWPPBFCr7anS06FjkJo9mCR1el4tt9uVCrJLw5tS9uGxAhOhZRIywoRIJoNSosndEfdwyMgEUGnllzCEs2p0OWeQoytR6DyYK5K/bhhwN5cFFLWHJnPy4lJkViQSESSKNW4ZUpvfHQcOukxNd+Po7nfzgKi4UlhVperdGMB75Iwc9HCqHVqPDhzAFI7BkqOhbRRbGgEAkmSRKeSozFwvHdAQDLd2bhkVWpMJgsgpORIymrNmDmx8n4La0Ibi4qfHT3QO4QS4rGgkKkEH+5PhpvT+sLF7WEHw7k4S/L96CqziQ6FjmAU8VVuPX9HdiTdRbebhosvzcOw7oEio5FdFksKEQKMrFvOD6eNQgeWjW2p5fgzv/sQklVnehYZMeST5Xi1vd34nRpDSLauWPNg9dhcIy/6FhEV8SCQqQww7oEYuV9g+HnqcXBXD1u/yAJOWU1omORHVqzLxd3fZwM/Tkj+kX5Yt2cIegc7C06FlGTsKAQKVCfSF+sfiAB4b7uyCypxuSlO5GaUy46FtmJhnN15n99AEazjHG9QrHyvsEI8HIVHY2oyVhQiBQqJtALax66DrEh3iiurMMdHyRh1R7ulUKXV2cy47FVqbZzdR4c3hHvTu8HNxe14GREzcOCQqRgwT5u+OaBBOuus2YLnv72EP6+9hBX+NBFna02YOZHu7EuNQ8alYRXpvTC04mxUKkk0dGImo0FhUjhvN1c8MFdA/D4zV0gScCXydmY/p9dKKqoFR2NFKRhpc7urDJ4u1pX6kwdFCU6FtFVY0EhsgMqlYR5Izrjk1mD4O2mQcrpsxj/7naknD4rOhopwPcH8nDLezuQVVqDcF93fPvQdbi+c4DoWETXhAWFyI7cGBuE7+dej85BXiiqrMO0ZUlYkcx5Kc6q1mjG39YewsMr96OqzoS4Dn5YN2cIunClDjkAFhQiOxMd4Im1c4ZgTM8QGM0y/rb2EBasOYg6k1l0NGpDGcVVmLRkB1YkZ0OSgHk3dcKK++IR6M2VOuQYWFCI7JCXqwbvz+iPpxK7QpKAlbtzMG3ZLuSVnxMdjdrAd6lncMu725FWUAl/Ty0+uzcOj4/qCo2aP9LJcfDZTGSnJEnCQ8M74dN7BkHn7oL92eUY/dY2rNmXyxORHVSt0Yxnvj2IR75KRbXBjMExfvjxkaHctp4ckiTb4U+yiooK6HQ66PV6+Pj4iI5DJFx2aQ0eWbUf+7PLAQCjewTjX7f2gj835nIY6UVVmLtiH9IKKuvf0umMR0Z0hppLiMmONOf1mwWFyEGYzBZ8uO0U3vr1BIxmGQFeWiye3Bs3d+eJtfZMlmWsTsnFou+PoMZgRoCXFm9N7cdVOmSXWFCInNiRPD3mrzqA44WVAIDbB0Rg4YTu8HZzEZyMmiunrAZ/W3sIv58sAQAkxPjj7Wl9EeTjJjgZ0dVhQSFycnUmM97YeALLtp2CLAPhvu54/fY+SOjIU2ztgclswSc7MvHGxhOoNVqg1ajwyIjOeOCGjnxLh+xac16/hU6SXbJkCTp06AA3NzfEx8dj9+7dIuMQOQxXjRoLxnTDqvsTEOnnjjPl5zD9P7vwwg9HUWvkcmQlO3xGj0nv78C/fkxDrdGCwTF+2PDIUMy5sRPLCTkVYQVl1apVmD9/PhYtWoR9+/ahT58+GD16NIqKikRFInI4cdF++OmRYZgeZ93y/JMdmRj5xlb8dCifK30U5pzBjMU/HsPEJTtw+EwFfNw0eGVKL6y8bzBiAr1ExyNqc8Le4omPj8egQYPw3nvvAQAsFgsiIyMxb948PPPMM5f9XL7FQ9R8m9OKsGDNIRTUn+EzOMYPC8f3QPcw/h0SbfvJEvxt7SFkl9UAAMb1DsWiCd0R5M25JuRYFD8HxWAwwMPDA6tXr8akSZNsH581axbKy8vx3XffNbq+rq4OdXV1tt9XVFQgMjKSBYWomWoMJnywJQMfbjuFOpMFKgmYFheFx2/uwiXJApwpP4d//3wca/afAQCE6tzw4qSeGNGNK6/IMSl+DkpJSQnMZjOCgxv/JQwODkZBQcEF1y9evBg6nc52i4yMbKuoRA7FQ6vB/FFdsenxGzCudygsMrAiORvDX9+Cj34/BYPJIjqiUyipqsPzPxzBja9twZr9ZyBJwD3XdcDG+TewnBDVs4udZBcsWAC9Xm+75eTkiI5EZNci2nlgyZ398fX/JaBHmA8qa0148X/HkPj2Nmw+znlgraWi1og3fjmOG17djE93ZMFgtiAhxh/rHhqC527pAS9XjeiIRIoh5G9DQEAA1Go1CgsLG328sLAQISEhF1zv6uoKV1cOPxO1tLhoP3w/93qsTsnBaz8fx6niatz76R5c3ykADw3viISO/pAkrhy5VrVGMz5PysL7WzJQXmMEAPSO0OHJ0V1xfacAPsZEFyGkoGi1WgwYMACbNm2yzUGxWCzYtGkT5s6dKyISkdNSqyRMHRSFMb1C8d5v6fh0Rya2p5dge3oJekfo8OANHTGqRwiXuJ7PbAa2bAF++w3IzgaiooCbbgKGDwfUagCA0WzB13tz8M6mkyissM6j6xjoiSdGdUVizxAWE6LLELaKZ9WqVZg1axY+/PBDxMXF4a233sLXX3+NtLS0C+amnI+reIhaT05ZDT76/RRW7c1BrdE6JyU6wBP3D4vB5P7hcNWoBScUzGAA7r8fWLECMBovvN/fH/r3l2FNeD8s35mF06XWlTnhvu54ZGRnTO4XzlOHyWkpfhVPg/feew+vvfYaCgoK0LdvX7zzzjuIj4+/4uexoBC1vtKqOny2MwufJZ2G/pz1hTjI2xV/uT4aM+KjnGfrfLPZOkry2WfA5s1AXt4lLz0W2AGf9x+Hdd1vxDmtdYmwv6cWc27shBmDo1juyOnZTUG5WiwoRG2nus6Elbuz8fH2TOTrrXuoeLtqMD0+CpP7hyM2xAH/DhoMwDvvAB99BBw/fvlLVRr81PU6/Lf/OOyN6GH7eJfyM5g582ZMHhgJT05+JQLAgkJErcBgsuD7A3n4cGsGThZV2T4eG+KNiX3DMbFvGMJ83QUmvAYGA/DWW8DnnwMZGUBt7RU/Jc87ACv6JuKrPqNR4tkOAKAxmzD6xE7M3P8j4nMOQ9q82TonhYgAsKAQUSuyWGT8llaEr/fmYPPxIhjNf/wIiYv2w6S+4RjXKxQ6DwW+BdRQRD77DMjKAurqrG/hNFGWbyh+7RyPXzrFY29Ed1hU1rdsgitLMf3ABkw/8DOCq8r++IQVK4Dp01v2eyCyYywoRNQm9DVG/Hg4H+v2n0Fy5h8vzC5qCcO7BuGWPmEY0ikAfp7alv/DV60Cpk1r+a/7JxZISA3rgo2dBuPXznE4GdC+0f2DTx/E3fv/h5tP7oKL5SJFhyMoRI2woBBRm8srP4fvD+Rh3f4zSCuobHRfl2AvxEf7Iz7GD3HRftd+xkwrLs/Vu3piT0QPbOwcj00d41Di1c52n8ZsQnzOYYxMT8bIk8mIrLjMpnYREdZRGjUnxhI1YEEhIqGOF1RiXeoZ/Hq0sNF8lQYxgZ6Ij/ZDfLQ/4qL9EKpza/qeIC1YTsrcfXA4uCMOB3fEkRDrf0+3C2t0jXddNYZn7MXI9GQMP5UCXV110774t98Ckye3WFYiR8CCQkSKUVpVhz1ZZdh1qgzJmWVIK6jA+T91PLVqRPp5oL2/B6L8PBDl74n2ftZfh7dzh0vDviHNfFvHLKlw1t0bpR6+KPXQocTTF1ntwqyFJLgjzuiCLvp5UWfzceOpvbj55C7E5RyB1mJq+jfs5WWd48JyQnQBFhQiUqzyGgP2ZJ1F8qlSJGeW4UieHpbL/BRSqySE6tzg7eYCbcpeaM1GuJhNcLEYoTUZobWYoDUZ4WIxocbFDaUeOlshKfPwgSxdflO06LIz6FGYgV4F6ehZmIEehRnwrb1w1OeK3N2Bp54Cnn2Wb+sQXQILChHZjVqjGWfKzyG7tAbZZTU4XVqD7LJqZJdZf9+wm+3VkmQL2p2rhF+NHv41eoRVFNsKSfeiU/A2nLu2byAuDvjXvxptcU9EF9ec12/uHkREQrm5qNEx0AsdA70uuE+WZRRX1iHnbA2q68wwjh0Ho1qDOrULjGoNjGoXGOp/Xad2gYexFn41egTU6OFfXQ7/Gj3anauARr62ktOISgX0729dPjx3LqBthRVKRMSCQkTKJUkSgnzcEORTv+rnpcdbfWnxRXl5AePHA/feC4wYwZESojbAgkJE9mPq1LYpKBoN0L49MHIk8Oab1vklRNSmWFCIyL7IcsvugyJJgIsL4O9vHSV5+20WEiIF4JnfRGR/ZBn46qur/3x/f+Cll6xb3Vss1v/m5QHLlrGcECkER1CIyD5NnWq9EZFD4ggKERERKQ4LChERESkOCwoREREpDgsKERERKQ4LChERESkOCwoREREpDgsKERERKQ4LChERESkOCwoREREpjl3uJCvLMgCgoqJCcBIiIiJqqobX7YbX8cuxy4JSWVkJAIiMjBSchIiIiJqrsrISOp3ustdIclNqjMJYLBbk5eXB29sbUkueagpru4uMjEROTg58fHxa9Gs7Gj5WTcfHqun4WDUdH6um42PVPK31eMmyjMrKSoSFhUGluvwsE7scQVGpVIiIiGjVP8PHx4dP4ibiY9V0fKyajo9V0/Gxajo+Vs3TGo/XlUZOGnCSLBERESkOCwoREREpDgvKeVxdXbFo0SK4urqKjqJ4fKyajo9V0/Gxajo+Vk3Hx6p5lPB42eUkWSIiInJsHEEhIiIixWFBISIiIsVhQSEiIiLFYUEhIiIixWFBqffSSy/huuuug4eHB3x9fS96TXZ2NsaNGwcPDw8EBQXhySefhMlkatugCtWhQwdIktTo9vLLL4uOpQhLlixBhw4d4Obmhvj4eOzevVt0JEV67rnnLngOxcbGio6lCNu2bcOECRMQFhYGSZKwbt26RvfLsoyFCxciNDQU7u7uGDlyJE6ePCkmrGBXeqzuueeeC55niYmJYsIKtnjxYgwaNAje3t4ICgrCpEmTcPz48UbX1NbWYs6cOfD394eXlxemTJmCwsLCNsnHglLPYDDg9ttvx4MPPnjR+81mM8aNGweDwYCdO3fis88+w/Lly7Fw4cI2TqpcL7zwAvLz8223efPmiY4k3KpVqzB//nwsWrQI+/btQ58+fTB69GgUFRWJjqZIPXr0aPQc2r59u+hIilBdXY0+ffpgyZIlF73/1VdfxTvvvIMPPvgAycnJ8PT0xOjRo1FbW9vGScW70mMFAImJiY2eZytXrmzDhMqxdetWzJkzB7t27cLGjRthNBoxatQoVFdX26557LHH8MMPP+Cbb77B1q1bkZeXh8mTJ7dNQJka+fTTT2WdTnfBx3/88UdZpVLJBQUFto8tXbpU9vHxkevq6towoTK1b99efvPNN0XHUJy4uDh5zpw5tt+bzWY5LCxMXrx4scBUyrRo0SK5T58+omMoHgB57dq1tt9bLBY5JCREfu2112wfKy8vl11dXeWVK1cKSKgc5z9WsizLs2bNkidOnCgkj9IVFRXJAOStW7fKsmx9Hrm4uMjffPON7Zpjx47JAOSkpKRWz8MRlCZKSkpCr169EBwcbPvY6NGjUVFRgSNHjghMphwvv/wy/P390a9fP7z22mtO//aXwWBASkoKRo4cafuYSqXCyJEjkZSUJDCZcp08eRJhYWGIiYnBjBkzkJ2dLTqS4mVmZqKgoKDR80yn0yE+Pp7Ps0vYsmULgoKC0LVrVzz44IMoLS0VHUkR9Ho9AMDPzw8AkJKSAqPR2Oi5FRsbi6ioqDZ5btnlYYEiFBQUNConAGy/LygoEBFJUR5++GH0798ffn5+2LlzJxYsWID8/Hy88cYboqMJU1JSArPZfNHnTVpamqBUyhUfH4/ly5eja9euyM/Px/PPP4+hQ4fi8OHD8Pb2Fh1PsRp+/lzsecafTRdKTEzE5MmTER0djYyMDPztb3/DmDFjkJSUBLVaLTqeMBaLBY8++iiGDBmCnj17ArA+t7Ra7QXzMtvqueXQBeWZZ57BK6+8ctlrjh07xol4l9Ccx2/+/Pm2j/Xu3RtarRb/93//h8WLF3NraWqSMWPG2H7du3dvxMfHo3379vj6668xe/ZsgcnIkUybNs326169eqF3797o2LEjtmzZghEjRghMJtacOXNw+PBhRc37cuiC8vjjj+Oee+657DUxMTFN+lohISEXrL5omMkcEhJyVfmU7loev/j4eJhMJmRlZaFr166tkE75AgICoFarL5jxXlhY6LDPmZbk6+uLLl26ID09XXQURWt4LhUWFiI0NNT28cLCQvTt21dQKvsRExODgIAApKenO21BmTt3LtavX49t27YhIiLC9vGQkBAYDAaUl5c3GkVpq59hDl1QAgMDERgY2CJfKyEhAS+99BKKiooQFBQEANi4cSN8fHzQvXv3FvkzlOZaHr/U1FSoVCrbY+WMtFotBgwYgE2bNmHSpEkArMOomzZtwty5c8WGswNVVVXIyMjAzJkzRUdRtOjoaISEhGDTpk22QlJRUYHk5ORLrkqkP+Tm5qK0tLRRuXMWsixj3rx5WLt2LbZs2YLo6OhG9w8YMAAuLi7YtGkTpkyZAgA4fvw4srOzkZCQ0Or5HLqgNEd2djbKysqQnZ0Ns9mM1NRUAECnTp3g5eWFUaNGoXv37pg5cyZeffVVFBQU4B//+AfmzJnj9G9hJCUlITk5GTfeeCO8vb2RlJSExx57DHfddRfatWsnOp5Q8+fPx6xZszBw4EDExcXhrbfeQnV1Ne69917R0RTniSeewIQJE9C+fXvk5eVh0aJFUKvVmD59uuhowlVVVTUaScrMzERqair8/PwQFRWFRx99FC+++CI6d+6M6OhoPPvsswgLC7MVY2dyucfKz88Pzz//PKZMmYKQkBBkZGTgqaeeQqdOnTB69GiBqcWYM2cOVqxYge+++w7e3t62eSU6nQ7u7u7Q6XSYPXs25s+fDz8/P/j4+GDevHlISEjA4MGDWz9gq68TshOzZs2SAVxw27x5s+2arKwsecyYMbK7u7scEBAgP/7447LRaBQXWiFSUlLk+Ph4WafTyW5ubnK3bt3kf/3rX3Jtba3oaIrw7rvvylFRUbJWq5Xj4uLkXbt2iY6kSFOnTpVDQ0NlrVYrh4eHy1OnTpXT09NFx1KEzZs3X/Tn06xZs2RZti41fvbZZ+Xg4GDZ1dVVHjFihHz8+HGxoQW53GNVU1Mjjxo1Sg4MDJRdXFzk9u3by/fdd1+j7SOcycUeJwDyp59+arvm3Llz8kMPPSS3a9dO9vDwkG+99VY5Pz+/TfJJ9SGJiIiIFIP7oBAREZHisKAQERGR4rCgEBERkeKwoBAREZHisKAQERGR4rCgEBERkeKwoBAREZHisKAQERGR4rCgEBERkeKwoBAREZHisKAQERGR4rCgEBERkeL8P8/41jvtWuUrAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "#定义函数\n",
    "f = lambda x : ( x - 3.5 ) ** 2 - 4.5*x + 10\n",
    "#求导函数\n",
    "def g(x):\n",
    "    return 2*(x-3.5) - 4.5\n",
    "#设置学习率\n",
    "eta = 0.01\n",
    "#定义开始值,瞎蒙\n",
    "x = np.random.randint(0,20, size=1)[0]\n",
    "#记住上一次的值\n",
    "last_x = x + 0.1\n",
    "theas = []\n",
    "while True:\n",
    "    if np.abs(x - last_x) < 0.0001: #这里可以判断自变量的变化范围也可以判断因变量的变化范围\n",
    "        break\n",
    "    last_x = x  #记住上一次的值    \n",
    "    x -= eta*g(x) #更新x的值\n",
    "    theas.append(x)\n",
    "    #print(x)\n",
    "\n",
    "#可视化\n",
    "x = np.linspace(-10,20,50)\n",
    "y = f(x)\n",
    "plt.plot(x,y)\n",
    "theas = np.array(theas)\n",
    "plt.scatter(theas, f(theas), color='red')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "94eab0cf",
   "metadata": {},
   "source": [
    "### 批量梯度下降BGD"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "be0e9451",
   "metadata": {},
   "source": [
    "#### 一元一次方程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "aa290eec",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "真实斜率和截距是: 6 6\n",
      "梯度下降计算斜率和截距是: [[6.149006  ]\n",
      " [5.94365555]]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 1、创建数据集X，y\n",
    "X = np.random.rand(100, 1)\n",
    "w,b = np.random.randint(1,10, size=2)\n",
    "y = w * X + b + np.random.randn(100,1)\n",
    "#plt.plot(X,y)\n",
    "# 2、使用偏置项x_0 = 1，更新X\n",
    "X = np.c_[X, np.ones((100,1))]\n",
    "\n",
    "# 3、创建超参数轮次\n",
    "epoches = 10000\n",
    "\n",
    "# 4、定义一个函数来调整学习率，逆时衰减\n",
    "t0,t1 = 5,1000\n",
    "def learning_rate_schedule(t):\n",
    "    return t0 / (t + t1)\n",
    "\n",
    "# 5、初始化 W0...Wn，标准正太分布创建W\n",
    "theta = np.random.randn(2,1)\n",
    "# 6、判断是否收敛，一般不会去设定阈值，而是直接采用设置相对大的迭代次数保证可以收敛\n",
    "for i in range(epoches):\n",
    "    # 根据公式计算梯度\n",
    "    g = X.T.dot(X.dot(theta) - y)\n",
    "    # 应用梯度下降的公式去调整 theta值\n",
    "    learn_rate = learning_rate_schedule(i)\n",
    "    theta = theta - learn_rate * g\n",
    "print('真实斜率和截距是:', w , b)\n",
    "print('梯度下降计算斜率和截距是:', theta)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f5567193",
   "metadata": {},
   "source": [
    "#### 多元一次方程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "df4cec14",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "真实斜率和截距是: [[2]\n",
      " [9]\n",
      " [5]] [6]\n",
      "梯度下降计算斜率和截距是: [[2.3313614 ]\n",
      " [9.12609456]\n",
      " [4.82993804]\n",
      " [5.83811543]]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 1、创建数据集X，y\n",
    "X = np.random.rand(100, 3)\n",
    "w = np.random.randint(1,10, size=(3,1))\n",
    "b = np.random.randint(1,10, size=1)\n",
    "y = X.dot(w) + b + np.random.randn(100,1)\n",
    "#plt.plot(X,y)\n",
    "# 2、使用偏置项x_0 = 1，更新X\n",
    "X = np.c_[X, np.ones((100,1))]\n",
    "\n",
    "# 3、创建超参数轮次\n",
    "epoches = 10000\n",
    "\n",
    "# 4、定义一个函数来调整学习率，逆时衰减\n",
    "t0,t1 = 5,1000\n",
    "def learning_rate_schedule(t):\n",
    "    return t0 / (t + t1)\n",
    "\n",
    "# 5、初始化 W0...Wn，标准正太分布创建W\n",
    "theta = np.random.randn(4,1)\n",
    "# 6、判断是否收敛，一般不会去设定阈值，而是直接采用设置相对大的迭代次数保证可以收敛\n",
    "for i in range(epoches):\n",
    "    # 根据公式计算梯度\n",
    "    g = X.T.dot(X.dot(theta) - y)\n",
    "    # 应用梯度下降的公式去调整 theta值\n",
    "    learn_rate = learning_rate_schedule(i)\n",
    "    theta = theta - learn_rate * g\n",
    "print('真实斜率和截距是:', w , b)\n",
    "print('梯度下降计算斜率和截距是:', theta)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2b9eeafd",
   "metadata": {},
   "source": [
    "### 随机梯度下降SGD"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "758c23c5",
   "metadata": {},
   "source": [
    "#### 一元一次方程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "bc8b72f5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "真实斜率和截距是: 2 1\n",
      "梯度下降计算斜率和截距是: [[0.65135878]\n",
      " [1.61745343]]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 1、创建数据集X，y\n",
    "X = np.random.rand(100, 1)\n",
    "w,b = np.random.randint(1,10, size=2)\n",
    "y = w * X + b + np.random.randn(100,1)\n",
    "#plt.plot(X,y)\n",
    "# 2、使用偏置项x_0 = 1，更新X\n",
    "X = np.c_[X, np.ones((100,1))]\n",
    "\n",
    "# 3、创建超参数轮次\n",
    "epoches = 10000\n",
    "\n",
    "# 4、定义一个函数来调整学习率，逆时衰减\n",
    "t0,t1 = 5,1000\n",
    "def learning_rate_schedule(t):\n",
    "    return t0 / (t + t1)\n",
    "\n",
    "# 5、初始化 W0...Wn，标准正太分布创建W\n",
    "theta = np.random.randn(2,1)\n",
    "# 6、判断是否收敛，一般不会去设定阈值，而是直接采用设置相对大的迭代次数保证可以收敛\n",
    "for i in range(epoches):\n",
    "    index = np.random.randint(0,100,size=1)[0]\n",
    "    X_i = X[[index]]\n",
    "    y_i = y[[index]]\n",
    "    # 根据公式计算梯度\n",
    "    g = X_i.T.dot(X_i.dot(theta) - y_i)\n",
    "    # 应用梯度下降的公式去调整 theta值\n",
    "    learn_rate = learning_rate_schedule(i)\n",
    "    theta = theta - learn_rate * g\n",
    "print('真实斜率和截距是:', w , b)\n",
    "print('梯度下降计算斜率和截距是:', theta)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c79696f1",
   "metadata": {},
   "source": [
    "#### 多元一次方程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "d1564eaa",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "真实斜率和截距是： [[7]\n",
      " [1]\n",
      " [8]\n",
      " [4]\n",
      " [4]] [8]\n",
      "梯度下降计算斜率和截距是： [[7.45742096]\n",
      " [1.25032298]\n",
      " [7.92605553]\n",
      " [4.53434987]\n",
      " [4.25459956]\n",
      " [6.37937398]]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "# 1、创建数据集X，y\n",
    "X = 2*np.random.rand(100, 5)\n",
    "w = np.random.randint(1,10,size = (5,1))\n",
    "b = np.random.randint(1,10,size = 1)\n",
    "y = X.dot(w) + b + np.random.randn(100, 1)\n",
    "\n",
    "# 2、使用偏置项x_0 = 1，更新X\n",
    "X = np.c_[X, np.ones((100, 1))]\n",
    "\n",
    "# 3、创建超参数轮次、样本数量\n",
    "epochs = 20000\n",
    "n = 100\n",
    "\n",
    "# 4、定义一个函数来调整学习率\n",
    "t0, t1 = 5, 500\n",
    "def learning_rate_schedule(t):\n",
    "    return t0/(t+t1)\n",
    "\n",
    "# 5、初始化 W0...Wn，标准正太分布创建W\n",
    "θ = np.random.randn(6, 1)\n",
    "\n",
    "# 6、多次for循环实现梯度下降，最终结果收敛\n",
    "for epoch in range(epochs):\n",
    "    # 在双层for循环之间，每个轮次开始分批次迭代之前打乱数据索引顺序\n",
    "    index = np.random.randint(0,100,size = 1)[0] # 0 ~99\n",
    "    X_i = X[[index]] # 打乱顺序\n",
    "    y_i = y[[index]]\n",
    "    g = X_i.T.dot(X_i.dot(θ)-y_i)\n",
    "    learning_rate = learning_rate_schedule(epoch)\n",
    "    θ = θ - learning_rate * g\n",
    "print('真实斜率和截距是：',w,b)\n",
    "print('梯度下降计算斜率和截距是：',θ)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ec554a1d",
   "metadata": {},
   "source": [
    "### 小批量随机梯度下降MBGD"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d9085b67",
   "metadata": {},
   "source": [
    "#### 一元一次方程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "372bf7b0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "真实斜率和截距是: 2 9\n",
      "梯度下降计算斜率和截距是: [[1.58292346]\n",
      " [9.30748202]]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 1、创建数据集X，y\n",
    "X = np.random.rand(100, 1)\n",
    "w,b = np.random.randint(1,10, size=2)\n",
    "y = w * X + b + np.random.randn(100,1)\n",
    "#plt.plot(X,y)\n",
    "# 2、使用偏置项x_0 = 1，更新X\n",
    "X = np.c_[X, np.ones((100,1))]\n",
    "\n",
    "# 3、创建超参数轮次\n",
    "epoches = 10000\n",
    "batch_size = 16 #批量个数\n",
    "\n",
    "# 4、定义一个函数来调整学习率，逆时衰减\n",
    "t0,t1 = 5,1000\n",
    "def learning_rate_schedule(t):\n",
    "    return t0 / (t + t1)\n",
    "\n",
    "# 5、初始化 W0...Wn，标准正太分布创建W\n",
    "theta = np.random.randn(2,1)\n",
    "# 6、判断是否收敛，一般不会去设定阈值，而是直接采用设置相对大的迭代次数保证可以收敛\n",
    "for i in range(epoches):\n",
    "    index = np.random.randint(0,100,size=batch_size)\n",
    "    X_batch = X[index]\n",
    "    y_batch = y[index]\n",
    "    # 根据公式计算梯度\n",
    "    g = X_batch.T.dot(X_batch.dot(theta) - y_batch)\n",
    "    # 应用梯度下降的公式去调整 theta值\n",
    "    learn_rate = learning_rate_schedule(i)\n",
    "    theta = theta - learn_rate * g\n",
    "print('真实斜率和截距是:', w , b)\n",
    "print('梯度下降计算斜率和截距是:', theta)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b6f0ae25",
   "metadata": {},
   "source": [
    "#### 多元一次方程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "2756b779",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "真实斜率和截距是: [[3]\n",
      " [3]\n",
      " [4]] [1]\n",
      "梯度下降计算斜率和截距是: [[3.28472898]\n",
      " [2.96405587]\n",
      " [4.55075614]\n",
      " [0.67311225]]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 1、创建数据集X，y\n",
    "X = np.random.rand(100, 3)\n",
    "w = np.random.randint(1,10, size=(3,1))\n",
    "b = np.random.randint(1,10, size=1)\n",
    "y = X.dot(w) + b + np.random.randn(100,1)\n",
    "#plt.plot(X,y)\n",
    "# 2、使用偏置项x_0 = 1，更新X\n",
    "X = np.c_[X, np.ones((100,1))]\n",
    "\n",
    "# 3、创建超参数轮次\n",
    "epoches = 10000\n",
    "batch_size = 16\n",
    "\n",
    "# 4、定义一个函数来调整学习率，逆时衰减\n",
    "t0,t1 = 5,1000\n",
    "def learning_rate_schedule(t):\n",
    "    return t0 / (t + t1)\n",
    "\n",
    "# 5、初始化 W0...Wn，标准正太分布创建W\n",
    "theta = np.random.randn(4,1)\n",
    "# 6、判断是否收敛，一般不会去设定阈值，而是直接采用设置相对大的迭代次数保证可以收敛\n",
    "for i in range(epoches):\n",
    "    # 在双层for循环之间，每个轮次开始分批次迭代之前打乱数据索引顺序\n",
    "    index = np.random.randint(0,100,size = batch_size)\n",
    "    X_batch = X[index]\n",
    "    y_batch = y[index]\n",
    "    # 一次取一批数据16个样本\n",
    "    g = X_batch.T.dot(X_batch.dot(theta)-y_batch)\n",
    "    learning_rate = learning_rate_schedule(i)\n",
    "    theta = theta - learn_rate * g\n",
    "print('真实斜率和截距是:', w , b)\n",
    "print('梯度下降计算斜率和截距是:', theta)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6d105560",
   "metadata": {},
   "source": [
    "### 归一化"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "09183aae",
   "metadata": {},
   "source": [
    "#### 最小值最大值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "a583b31e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.66666667, 0.54875283],\n",
       "       [0.47222222, 0.02267574],\n",
       "       [0.44444444, 0.54195011],\n",
       "       [0.27777778, 0.46712018],\n",
       "       [1.        , 0.09070295],\n",
       "       [0.83333333, 0.9569161 ],\n",
       "       [0.77777778, 0.99092971],\n",
       "       [0.16666667, 0.83219955],\n",
       "       [0.11111111, 0.91609977],\n",
       "       [1.        , 0.569161  ],\n",
       "       [0.16666667, 1.        ],\n",
       "       [0.25      , 0.52834467],\n",
       "       [0.22222222, 0.        ],\n",
       "       [0.        , 0.14965986],\n",
       "       [0.72222222, 0.7755102 ],\n",
       "       [0.86111111, 0.71882086],\n",
       "       [0.55555556, 0.09977324],\n",
       "       [0.13888889, 0.9138322 ],\n",
       "       [0.38888889, 0.57596372],\n",
       "       [0.13888889, 0.78684807]])"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "array([[0.66666667, 0.54875283],\n",
       "       [0.47222222, 0.02267574],\n",
       "       [0.44444444, 0.54195011],\n",
       "       [0.27777778, 0.46712018],\n",
       "       [1.        , 0.09070295],\n",
       "       [0.83333333, 0.9569161 ],\n",
       "       [0.77777778, 0.99092971],\n",
       "       [0.16666667, 0.83219955],\n",
       "       [0.11111111, 0.91609977],\n",
       "       [1.        , 0.569161  ],\n",
       "       [0.16666667, 1.        ],\n",
       "       [0.25      , 0.52834467],\n",
       "       [0.22222222, 0.        ],\n",
       "       [0.        , 0.14965986],\n",
       "       [0.72222222, 0.7755102 ],\n",
       "       [0.86111111, 0.71882086],\n",
       "       [0.55555556, 0.09977324],\n",
       "       [0.13888889, 0.9138322 ],\n",
       "       [0.38888889, 0.57596372],\n",
       "       [0.13888889, 0.78684807]])"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np \n",
    "X_1 = np.random.randint(1,50, size=20)\n",
    "X_2 = np.random.randint(500, 1000, size=20)\n",
    "X = np.c_[X_1, X_2]\n",
    "X_min = X.min(axis=0)\n",
    "X_max = X.max(axis=0)\n",
    "X_ = (X - X_min) / (X_max - X_min)\n",
    "display(X_)\n",
    "#使用sklearn实现\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "min_max_scaler = MinMaxScaler()\n",
    "X_s = min_max_scaler.fit_transform(X)\n",
    "display(X_s)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "54d85c51",
   "metadata": {},
   "source": [
    "#### 0-均值标准化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "9f21beea",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "归一化之前的数据：\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[  6, 119],\n",
       "       [  2, 126],\n",
       "       [  4, 147],\n",
       "       [  1, 153],\n",
       "       [  8, 113],\n",
       "       [  4, 281],\n",
       "       [  1, 160],\n",
       "       [  2, 211],\n",
       "       [  7, 176],\n",
       "       [  6, 279]])"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "归一化之后的数据：\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[ 0.78288136, -0.98322207],\n",
       "       [-0.86528993, -0.86352547],\n",
       "       [-0.04120428, -0.50443567],\n",
       "       [-1.27733275, -0.40183858],\n",
       "       [ 1.606967  , -1.08581915],\n",
       "       [-0.04120428,  1.78689923],\n",
       "       [-1.27733275, -0.28214198],\n",
       "       [-0.86528993,  0.58993324],\n",
       "       [ 1.19492418, -0.00854976],\n",
       "       [ 0.78288136,  1.75270021]])"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "x_1 = np.random.randint(1,10,size = 10)\n",
    "x_2 = np.random.randint(100,300,size = 10)\n",
    "x = np.c_[x_1,x_2]\n",
    "print('归一化之前的数据：')\n",
    "display(x)\n",
    "x_ = (x - x.mean(axis = 0)) / x.std(axis = 0)\n",
    "print('归一化之后的数据：')\n",
    "display(x_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "661c5d45",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "归一化之前的数据：\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[  3, 106],\n",
       "       [  3, 131],\n",
       "       [  8, 198],\n",
       "       [  5, 283],\n",
       "       [  4, 158],\n",
       "       [  3, 172],\n",
       "       [  2, 142],\n",
       "       [  4, 170],\n",
       "       [  2, 201],\n",
       "       [  4, 232]])"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "归一化之后的数据：\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[-0.48154341, -1.49491939],\n",
       "       [-0.48154341, -0.98505602],\n",
       "       [ 2.52810291,  0.3813778 ],\n",
       "       [ 0.72231512,  2.11491324],\n",
       "       [ 0.12038585, -0.43440359],\n",
       "       [-0.48154341, -0.1488801 ],\n",
       "       [-1.08347268, -0.76071614],\n",
       "       [ 0.12038585, -0.18966917],\n",
       "       [-1.08347268,  0.4425614 ],\n",
       "       [ 0.12038585,  1.07479198]])"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "x_1 = np.random.randint(1,10,size = 10)\n",
    "x_2 = np.random.randint(100,300,size = 10)\n",
    "x = np.c_[x_1,x_2]\n",
    "print('归一化之前的数据：')\n",
    "display(x)\n",
    "standard_scaler = StandardScaler()\n",
    "x_ = standard_scaler.fit_transform(x)\n",
    "print('归一化之后的数据：')\n",
    "display(x_)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5bb81dd2",
   "metadata": {},
   "source": [
    "### 梯度下降优化"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "16d6353a",
   "metadata": {},
   "source": [
    "Lasso算法和Ridge算法是为了增强梯度下降的鲁棒性，防止过拟合的情况"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cc42fe2d",
   "metadata": {},
   "source": [
    "#### Lasso算法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "57fa1f07",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "原始方程的斜率： [-0.51327209 -1.13633161  0.70120842 -1.14979873 -0.02102599  0.2347372\n",
      " -0.77013567 -0.85113675 -0.86628936  0.39981044  0.53359218  2.68496497\n",
      " -0.61884589  0.81037856  1.52829299  0.72742136 -0.29943402  0.4924591\n",
      "  1.59790003  0.12259818]\n",
      "原始方程的截距： [6]\n",
      "套索回归求解的斜率： [-0.         -0.15835674  0.         -0.         -0.         -0.\n",
      "  0.         -0.         -0.          0.          0.04784172  0.98307225\n",
      " -0.          0.          0.81161423  0.          0.         -0.\n",
      "  0.42717397 -0.        ]\n",
      "套索回归求解的截距： [7.18140906]\n",
      "随机梯度下降求解的斜率是： [-0.56445222 -0.80963727  0.88280448 -0.91291461  0.06012876  0.49121356\n",
      " -0.20834183 -0.75641806 -0.2580575   0.45952719  1.16714749  2.14080204\n",
      " -0.28259632  0.64122539  1.92622309  1.00039989 -0.04854016  0.33858617\n",
      "  1.81328716  0.38656635]\n",
      "随机梯度下降求解的截距是： [1.93603476]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\developer\\python\\396\\lib\\site-packages\\sklearn\\utils\\validation.py:1300: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
      "  y = column_or_1d(y, warn=True)\n"
     ]
    }
   ],
   "source": [
    "import numpy as np \n",
    "from sklearn.linear_model import Lasso\n",
    "from sklearn.linear_model import SGDRegressor\n",
    "\n",
    "X = 2*np.random.rand(100, 20)\n",
    "w = np.random.randn(20,1)\n",
    "b = np.random.randint(1,10, size=1)\n",
    "y = X.dot(w) + b + np.random.randn(100,1)\n",
    "\n",
    "print('原始方程的斜率：',w.ravel())\n",
    "print('原始方程的截距：',b)\n",
    "\n",
    "#Lasso算法 alpha是学习率\n",
    "lasso = Lasso(alpha=0.5)\n",
    "lasso.fit(X, y)\n",
    "print('套索回归求解的斜率：',lasso.coef_)\n",
    "print('套索回归求解的截距：',lasso.intercept_)\n",
    "\n",
    "#线性回归梯度下降方法\n",
    "sgd = SGDRegressor(penalty='l2', alpha=0, l1_ratio=0)\n",
    "sgd.fit(X,y)\n",
    "print('随机梯度下降求解的斜率是：',sgd.coef_)\n",
    "print('随机梯度下降求解的截距是：',sgd.intercept_)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6ff84d83",
   "metadata": {},
   "source": [
    "#### Ridge算法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "e198cee6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "原始方程的斜率： [2 4 1 1 6]\n",
      "原始方程的截距： [4]\n",
      "岭回归求解的斜率： [[1.78828296 4.00460526 0.89965734 0.8229948  5.75817873]]\n",
      "岭回归求解的截距： [4.72797803]\n",
      "随机梯度下降求解的斜率是： [2.06326103 4.3294092  1.17690991 1.10620376 5.83174026]\n",
      "随机梯度下降求解的截距是： [3.46929681]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "from sklearn.linear_model import Ridge\n",
    "from sklearn.linear_model import SGDRegressor\n",
    "\n",
    "# 1、创建数据集X，y\n",
    "X = 2*np.random.rand(100, 5)\n",
    "w = np.random.randint(1,10,size = (5,1))\n",
    "b = np.random.randint(1,10,size = 1)\n",
    "y = X.dot(w) + b + np.random.randn(100, 1)\n",
    "\n",
    "print('原始方程的斜率：',w.ravel())\n",
    "print('原始方程的截距：',b)\n",
    "\n",
    "ridge = Ridge(alpha= 1, solver='sag')\n",
    "ridge.fit(X, y)\n",
    "print('岭回归求解的斜率：',ridge.coef_)\n",
    "print('岭回归求解的截距：',ridge.intercept_)\n",
    "\n",
    "# 线性回归梯度下降方法\n",
    "sgd = SGDRegressor(penalty='l2',alpha=0,l1_ratio=0)\n",
    "sgd.fit(X, y.reshape(-1,))\n",
    "print('随机梯度下降求解的斜率是：',sgd.coef_)\n",
    "print('随机梯度下降求解的截距是：',sgd.intercept_)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9d40bbb1",
   "metadata": {},
   "source": [
    "#### Elastic-Net算法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "31b8c0da",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "原始方程的斜率： [-0.34563986 -1.02125427  0.71811598  0.34534718 -0.98814848  0.92647188\n",
      " -0.5462135   0.42951981  2.83943102  1.73516864  0.03226649  1.99583686\n",
      "  0.53197014 -1.50575992  1.36440483  1.40202348 -0.04737053  1.02143987\n",
      "  1.73000703 -0.34886269]\n",
      "原始方程的截距： [1]\n",
      "弹性网络回归求解的斜率： [-0.         -0.          0.          0.         -0.          0.\n",
      " -0.          0.          0.40910956  0.         -0.          0.46076031\n",
      "  0.         -0.          0.          0.          0.          0.\n",
      "  0.         -0.        ]\n",
      "弹性网络回归求解的截距： [10.11109294]\n",
      "随机梯度下降求解的斜率是： [-0.37370622 -0.86573941  0.61082136  0.37864812 -0.93914111  0.77017558\n",
      " -0.49707872  0.46027942  2.76819533  1.61302998  0.26157811  2.20037072\n",
      "  0.30109747 -1.15587869  1.35432402  1.20132156  0.15559013  1.11803367\n",
      "  1.51683766 -0.19824614]\n",
      "随机梯度下降求解的截距是： [0.48298139]\n"
     ]
    }
   ],
   "source": [
    "#是Lasso算法和Ridge算法的一个综合\n",
    "import numpy as np\n",
    "from sklearn.linear_model import ElasticNet\n",
    "from sklearn.linear_model import SGDRegressor\n",
    "\n",
    "# 1、创建数据集X，y\n",
    "X = 2*np.random.rand(100, 20)\n",
    "w = np.random.randn(20,1)\n",
    "b = np.random.randint(1,10,size = 1)\n",
    "y = X.dot(w) + b + np.random.randn(100, 1)\n",
    "\n",
    "print('原始方程的斜率：',w.ravel())\n",
    "print('原始方程的截距：',b)\n",
    "\n",
    "model = ElasticNet(alpha= 1, l1_ratio = 0.7)\n",
    "model.fit(X, y)\n",
    "print('弹性网络回归求解的斜率：',model.coef_)\n",
    "print('弹性网络回归求解的截距：',model.intercept_)\n",
    "\n",
    "# 线性回归梯度下降方法\n",
    "sgd = SGDRegressor(penalty='l2',alpha=0, l1_ratio=0)\n",
    "sgd.fit(X, y.reshape(-1,))\n",
    "print('随机梯度下降求解的斜率是：',sgd.coef_)\n",
    "print('随机梯度下降求解的截距是：',sgd.intercept_)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f692bebb",
   "metadata": {},
   "source": [
    "### 多项式回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "652b90ed",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1a20c447fd0>]"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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TeOMM84gLi6O5s2bc8kll7Bhw4ZwhxU2Dz74IIZhcPvtt4c7lJDasWMHI0aMICkpiZiYGLp06cJ3330X7rBCxu/3M3ny5FI/9+69994qncNRF3311VcMHjyYFi1aYBgG8+fPL/W8aZrcc889pKamEhMTQ//+/dm4cWN4gq0lh/seeL1e7rzzTrp06UJsbCwtWrTg2muvZefOnSGJrUEmHz///DOBQIDnnnuOH3/8kenTp/Pss89y9913hzu0WvPGG28wceJEpkyZwurVqzn11FMZMGAAu3fvDndotW7x4sWMGzeOZcuW8emnn+L1erngggvIy8sLd2ght3LlSp577jm6du0a7lBCav/+/fTt2xen08lHH33E+vXr+de//kWTJk3CHVrIPPTQQ8yYMYOnnnqKn376iYceeoiHH36YJ598Mtyh1Yq8vDxOPfVUnn766Qqff/jhh3niiSd49tlnWb58ObGxsQwYMICCgoIQR1p7Dvc9yM/PZ/Xq1UyePJnVq1fzzjvvsGHDBv70pz+FJjhTTNM0zYcffths27ZtuMOoNT179jTHjRtX9LHf7zdbtGhhTps2LYxRhcfu3btNwFy8eHG4Qwmp3Nxcs3379uann35qnnXWWeZtt90W7pBC5s477zT79esX7jDCatCgQeb1119famzIkCHm8OHDwxRR6ADmu+++W/RxIBAwU1JSzEceeaRoLCsry4yKijJff/31MERY+8p+DyqyYsUKEzC3bt1a6/E0yMpHRbKzs0lMTAx3GLWisLCQVatW0b9//6Ixm81G//79Wbp0aRgjC4/s7GyAevvnXZlx48YxaNCgUn8PGor333+fHj16cPnll9O8eXNOP/10nn/++XCHFVJ9+vRh0aJF/PLLLwD88MMPfPPNN1x44YVhjiz0Nm/eTHp6eql/C263m169ejXIn4lB2dnZGIZBQkJCrX+uiDtYLhw2bdrEk08+yaOPPhruUGpFZmYmfr+f5OTkUuPJycn8/PPPYYoqPAKBALfffjt9+/alc+fO4Q4nZObOncvq1atZuXJluEMJi99++40ZM2YwceJE7r77blauXMmtt96Ky+Vi5MiR4Q4vJO666y5ycnLo0KEDdrsdv9/P/fffz/Dhw8MdWsilp6cDVPgzMfhcQ1NQUMCdd97JsGHDQnLgXr2qfNx1110YhnHYR9k32x07djBw4EAuv/xyxowZE6bIJVTGjRvHunXrmDt3brhDCZnt27dz22238dprrxEdHR3ucMIiEAjQrVs3HnjgAU4//XRuvPFGxowZw7PPPhvu0ELmzTff5LXXXmPOnDmsXr2aV155hUcffZRXXnkl3KFJmHm9Xq644gpM02TGjBkh+Zz1qvLx5z//meuuu+6w15xwwglF/79z507OOecc+vTpw8yZM2s5uvBp2rQpdrudjIyMUuMZGRmkpKSEKarQGz9+PB988AFfffUVxx9/fLjDCZlVq1axe/duunXrVjTm9/v56quveOqpp/B4PNjt9jBGWPtSU1Pp1KlTqbGOHTvy9ttvhymi0Lvjjju46667uOqqqwDo0qULW7duZdq0aQ2m+hMU/LmXkZFBampq0XhGRgannXZamKIKj2DisXXrVj7//POQVD2gniUfzZo1o1mzZlW6dseOHZxzzjl0796dWbNmYbPVqyJQKS6Xi+7du7No0SIuueQSwPpNcNGiRYwfPz68wYWAaZrccsstvPvuu3z55Ze0bds23CGF1HnnncfatWtLjY0aNYoOHTpw55131vvEA6Bv377ltlf/8ssvtG7dOkwRhV5+fn65n3N2u51AIBCmiMKnbdu2pKSksGjRoqJkIycnh+XLlzN27NjwBhdCwcRj48aNfPHFFyQlJYXsc9er5KOqduzYwdlnn03r1q159NFH2bNnT9Fz9bUSMHHiREaOHEmPHj3o2bMnjz/+OHl5eYwaNSrcodW6cePGMWfOHN577z3i4uKK5nTdbjcxMTFhjq72xcXFlVvfEhsbS1JSUoNZ9zJhwgT69OnDAw88wBVXXMGKFSuYOXNmva54ljV48GDuv/9+WrVqxSmnnML333/PY489xvXXXx/u0GrFgQMH2LRpU9HHmzdvZs2aNSQmJtKqVStuv/127rvvPtq3b0/btm2ZPHkyLVq0KPoFrT443PcgNTWVyy67jNWrV/PBBx/g9/uLfjYmJibicrlqN7ha308TgWbNmmUCFT7qsyeffNJs1aqV6XK5zJ49e5rLli0Ld0ghUdmf9axZs8IdWtg0tK22pmmaCxYsMDt37mxGRUWZHTp0MGfOnBnukEIqJyfHvO2228xWrVqZ0dHR5gknnGD+7W9/Mz0eT7hDqxVffPFFhf/uR44caZqmtd128uTJZnJyshkVFWWed9555oYNG8IbdA073Pdg8+bNlf5s/OKLL2o9NsM062l7OxEREYlI9Xehg4iIiEQkJR8iIiISUko+REREJKSUfIiIiEhIKfkQERGRkFLyISIiIiGl5ENERERCSsmHiIiIhJSSDxEREQkpJR8iIiISUko+REREJKSUfIiIiEhI/T8LKg5jtIl2AgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#多项式回归是指将线性回归转变成多项式的形式，来解决线性方程欠拟合问题\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt \n",
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "X = np.linspace(-1,11,num=100)\n",
    "y = (X - 5)**2 + 3*X -12 + np.random.randn(100)\n",
    "X = X.reshape(-1,1)\n",
    "plt.scatter(X,y)\n",
    "\n",
    "#创建测试数据\n",
    "X_test = np.linspace(-2,12,num=100).reshape(-1,1)\n",
    "# 3、不进行升维 + 普通线性回归\n",
    "model_1 = LinearRegression()\n",
    "model_1.fit(X,y)\n",
    "y_test_1 = model_1.predict(X_test_1)\n",
    "plt.plot(X_test, y_test_1, color='red')\n",
    "\n",
    "# 4、多项式升维 + 普通线性回归\n",
    "X = np.concatenate([X,X**2], axis=1)\n",
    "model_2 = LinearRegression()\n",
    "model_2.fit(X,y)\n",
    "X_test = np.concatenate([X_test, X_test**2], axis=1)\n",
    "y_test_2 = model_2.predict(X_test)\n",
    "plt.plot(X_test[:,0],y_test_2,color = 'green')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "e7698e77",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x1a20d79f130>]"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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FWLOnDm89957zJo1izVr1jBjxgxeeOGFQseiSPXk8Xi47rrrME2TiRMnVsjXrNYzKvfffz+DBg0q9TnNmjUL/P+uXbu4+OKLOf/885kyZUqQowuNOnXqYLfbSUtLKzSelpZGcnJyiKIKjbvvvptPPvmEpUuXcsopp4Q6nAqzevVq0tPTadeuXWDM5/OxdOlS3njjDdxuN3a7PYQRBl/9+vWPOsW9VatWfPjhhyGKqGI9+OCDPPLII9xwww0AnHXWWfz555+MHz++WswoFZX/sy8tLY369esHxtPS0jj33HNDFFXFy09S/vzzT7766qsKmU2Bap6o1K1bl7p165bpuTt37uTiiy+mffv2TJ8+HZutak5GRUZG0r59exYvXkyfPn0A67fLxYsXc/fdd4c2uApimib33HMPH3/8Md988w1NmzYNdUgV6pJLLmHdunWFxm699VZatmzJww8/XOWTFIAuXboctSX9l19+oUmTJiGKqGIdOnToqJ9xdrsdv98foohCq2nTpiQnJ7N48eJAYpKZmcmKFSsYNmxYaIOrIPlJyq+//srXX39N7dq1K+xrV+tEpax27tzJRRddRJMmTXjhhRfYs2dP4LGqOMswatQoBg4cSIcOHejUqROvvPIK2dnZ3HrrraEOrUIMHz6cWbNm8Z///IfY2NjAGnR8fDzR0dEhji74YmNjj6rHiYmJoXbt2tWmTmfkyJGcf/75PP3001x33XWsXLmSKVOmVNmZ1KJ69+7NU089RePGjTnzzDP58ccfeemllxg8eHCoQwuagwcPsnXr1sD9bdu2sXbtWhITE2ncuDEjRozgySefpEWLFjRt2pQxY8bQoEGDwC90lV1p779+/fpcc801rFmzhk8++QSfzxf4uZiYmEhkZGRwgwv6vqIqYPr06SZQ7K2qev31183GjRubkZGRZqdOnczly5eHOqQKU9Lf9fTp00MdWshUt+3JpmmaCxYsMNu0aWM6nU6zZcuW5pQpU0IdUoXJzMw077vvPrNx48ZmVFSU2axZM/P//u//TLfbHerQgubrr78u9vt+4MCBpmlaW5THjBljJiUlmU6n07zkkkvMLVu2hDboclTa+9+2bVuJPxe//vrroMdmmGYVbjUoIiIilVrVLLQQERGRKkGJioiIiIQtJSoiIiIStpSoiIiISNhSoiIiIiJhS4mKiIiIhC0lKiIiIhK2lKiIiIhI2FKiIiIiImFLiYqIiIiELSUqIiIiEraUqIiIiEjY+n9U+q2X4DNOTwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#使用PolynomialFeatures的特征升维\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.preprocessing import PolynomialFeatures,StandardScaler\n",
    "from sklearn.linear_model import SGDRegressor\n",
    "\n",
    "X = np.linspace(-1,11,num=100)\n",
    "y = (X - 5)**2 + 3*X -12 + np.random.randn(100)\n",
    "X = X.reshape(-1,1)\n",
    "plt.scatter(X,y)\n",
    "\n",
    "#创建测试数据\n",
    "X_test = np.linspace(-2,12,num=100).reshape(-1,1)\n",
    "# 3、不进行升维 + 普通线性回归\n",
    "model_1 = LinearRegression()\n",
    "model_1.fit(X,y)\n",
    "y_test_1 = model_1.predict(X_test_1)\n",
    "plt.plot(X_test, y_test_1, color='red')\n",
    "\n",
    "#使用PolynomialFeatures的特征升维\n",
    "ploy = PolynomialFeatures()\n",
    "ploy.fit(X,y)\n",
    "X = ploy.transform(X)\n",
    "s = StandardScaler()\n",
    "X = s.fit_transform(X)\n",
    "model = SGDRegressor(penalty='l2',eta0 = 0.01)\n",
    "model.fit(X,y)\n",
    "\n",
    "# 4、预测数据\n",
    "X_test = ploy.transform(X_test)\n",
    "X_test_normal = s.transform(X_test)\n",
    "y_test = model.predict(X_test_normal)\n",
    "plt.plot(X_test[:,1],y_test,color = 'green')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2c70a980",
   "metadata": {},
   "source": [
    "### 多项式回归实战之双十一销售额预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "c01fe7a0",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LinearRegression, Lasso, Ridge"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "5df655a1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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e+89rV+/Xvv27VOTJk30xBNP6IILLpBkv+4D6UM7ISFBq1ev1lNPPaUjR45o+/bt6ty5s5588kldc801TodX4P744w9ddNFFuuSSS9SrVy/de++9CgsLk2R3mQnEb7fXr1+vRo0aKSgoSAcOHFCZMmWcDqlQbd68We3atdPmzZsVExOj5557TtWqVUt3jOfvOBD+ntetW6fGjRt7/9+hQwdNmDBB5cuXD9jPoYMHD+qTTz7Rc889511brEmTJurevbseeeSRgPs7DsjzLQOc5e233zYNGjQwlmWluxUvXtzUrl3btGnTxnzyySdOh1mg/ve//5kaNWpkyLlYsWKmePHipk6dOmbcuHHp2qSmpjoUbf79+eefJiEhwekwisz48eNNkyZNMjy/4eHhZsyYMU6HVyiGDBliqlevbizLMiEhId6cS5QoYebPn2+MMSYlJcXhKAvO9ddfbyzLMqGhoSYiIsK0b9/efPbZZ+mOCaR8jTGmdevWxrIs8/LLLxtjss/Pn9+vPG6++WZjWZbp3bu3SU5OdjqcQnfDDTcYy7JMkyZNTFhYmAkJCTGDBg1yOqxC1bdvXxMWFmYsyzJ169ZNd/4xY8YMY4wxp0+fTtfGn1/bgXi+RWGBdL788kvvCVfXrl3Niy++aF5//XXTrl27dCfboaGhpkOHDuann35yOuR8W7BggbEsy5QsWdJ0797dvPLKK2by5MnmrrvuMrVq1TJly5b15t64cWPz9ddfe9v64xvatGnTTGhoqBkyZIjZtGmTSUpKcjqkQrVkyRITERFhQkJCzAUXXGC6d+9ubrvtNtOoUSPv8z579mynwyxQaf+O7733XjNmzBjzxhtvmMaNGxvLssy9997rdIgFauvWrd6/01q1apnw8HBjWZapWLGiuf/++83atWu9x6akpHhPSv35tT937lxjWZapV6+eOXnypDHGzu3s96Tjx487EV6BW7RokbEsy1SrVs0kJiYaY0y64mLLli1m6tSpZsSIEeall14y33zzjXdfamqq371Xe57fBg0amB07dpjbb7/d+zk0YsQIk5ycHHCF8ueff24syzJRUVFm8uTJZs+ePWbr1q2mW7duxrIsc/fdd6c7/ujRo97t5ORkv3uOA/V8i8IC6Xi+IRg/fnyGfXPnzs3wrX6dOnXMxIkTzYkTJxyItmB4vi2YOHFihn3r1683I0aMMB06dEhXYPTr188cPHjQgWjzr1atWt48rrrqKvPBBx+YvXv3+t2bck7Vr1/fWJZlBg8ebHbs2GGMMWb//v1m9uzZ5tJLLzWWZZlWrVqZhISEgPmgvvDCC41lWebNN9/03nfixAnz+uuve09GY2NjzV9//WWmTZtm5s+fb7788ktz5MgRB6POnxEjRhjLssytt95q7r//flOuXDnvB/OFF15oBg4caPbu3es9fteuXeatt94yf/75p4NR513NmjWNZVlm2rRpxpj03+KePn3aTJ482fTs2dPccMMNpkOHDubDDz8069evz/Btr7/o2rWrsSzLTJ482RhjvMVUcnKyGT16tKlatar3fS0oKMhYlmXatGljVq1a5WDUeed5fj3fVu/YscO0adPGWJZlGjVqZH7++WeHIyx4nvOP999/3xhz5ou7o0ePmnLlypnu3bublStXmoEDB5q2bduadu3amT59+pjNmzd7H8OfPscC9XyLwgJeH3zwgbEsyzRv3jzd/Wm/Ffrss89MVFSUCQ0NNfXq1TOWZZmLL7443bf4/mTWrFneE+y0zv4m87fffjP/+9//zOWXX26Cg4NNqVKlzOOPP+79xsRf3sw+/PBDY1mWOf/8802JEiW8b1hdu3Y1ixYtMrGxsU6HWKDeeecdY1mWadGiRab7p0yZYoKDg014eLhZvXp1EUdXON59911jWZa59tprvfd5Xp8//PCDiY6ONrVq1TLvvfeeCQ0N9b4G6tevb+6//37vCYu/vKY9ca5fv96UKVPGtGrVyhw/ftwsXrzYtGvXzkRGRhrLskxYWJi5+uqrzYQJE4wxxtx9993GsiwzZMgQJ8PPk2HDhhnLsky7du2893nesxYvXpzu2+20t/bt25u5c+c6FXaeHT582DRv3txUrlzZ7Nu3zxhzJt8RI0aYYsWKea9mlClTxtSqVcsUL17cm/err77qV18aeJ7f9u3bp7v/s88+M2XKlDGWZZnq1aubH374wRhjAqJb2JQpU7L8LE5ISDA33HCDqVGjhrnooosyvK6Dg4PN8OHD/er3EMjnWxQWMMbYf7yPPPKIsSzLO5bg1KlTmR7bunVrU758efO///3P1K5d29vl4McffzTG+M8JiTHGTJo0yRQvXtz06dPHGJMx57QfRqdPnzbz5s0z1113nbEsy0RERJgRI0YUabz5ceLE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/ropVaqUCQ4O9nZ19DdnF8Npu/5cddVVJioqysyaNStDu7179/r1cxyI51sUFsjS2rVrzbJly8yoUaPM3LlzMwyK8rwReAbV+cs399n5/vvvTa9evcwFF1zg/dAqVqyYefDBB83QoUPNe++9Z5588knvqs2BtoLx2TwnMJ6BZp5+roHI0+1pzpw55qWXXjKWZZkuXbo4HVah8zzHTz31lLEsy3Tr1s3hiArGP//8Y6pWrertNmNZ9nz3nm+2Pd/g+2txYUzWJ2NZdYPyPMd33nln0QRYwNJ+0zt06FDvVNGe9+lWrVqZPn36mBEjRphevXp5u5J4istA43n+9+3b551kwrKsTE/A/UVm40peeOEF71iSIUOGmL///tusW7fOTJkyxVx77bXesYD+LJDOtygsXCwuLs5s377drFq1yuzduzfH/TM9f/hJSUneGQoiIiL8un9n2g/i2NhY89FHH5kePXp458j2fIvg2Q4ODjadO3f2Xs0IRJ43sq+//tqb9/bt2x2OqvB41kC48MILvTPneL4tCkRpX/PffPONsSzLlCpVKqCeY89Uwp4uM57uP/4021VOZNUFLrPnOCwsLCCe48TERLNkyRLz/PPPpysw0t7CwsJMnz59/GLGr/zau3evd30WfxnAnFM7d+70zsLoGQvpWZU6ODjYNGnSxOzZs8fpMPPkXN1X/fF8i8LChQ4cOGA+/vhjU79+fe+MC3Xq1DHNmjUzDz74YLrLa5lN3+fx4YcfehetGT16dFGFnyc5/VYy7XF79+41X331lXn77bdNs2bNzJVXXmlq165tbr/9dvPRRx/59HzZBfUtbGpqqre4GjBgQIE8ZmEoiHxXrVplSpUq5S0gn3322QKIrPAU1HM8c+ZM73PsWZzKF+Ul323btpkrr7zSWJZlypYtm6/HckJBPscNGjQwlmWZ119/vUAeszDk5X06NjbW/PPPP2bWrFnm9ttvN926dTPXXHONee6558zixYsLK9QCUVDPr+fkdN68ed6Bvr4qtzl7cvvmm29Mjx49TMWKFdMVjz179vQugOqLcpNvdsf60/kWhYUL9erVy9s/tWTJkt5tz9RnnsFwGzdu9LY5eyq/48ePm6lTp5pbb73VvPrqqz7/QT1t2jTz559/poszq5izut+znoM/TEmZm3yzc/LkSfP444+bmjVr+vS3vPnNNzU1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",
      "text/plain": [
       "<Figure size 900x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "\n",
    "\n",
    "# 创建数据，年份数据2009 ~ 2019\n",
    "X = np.arange(2009,2020) # 一维\n",
    "# 天猫双十一销量\n",
    "y = np.array([0.5,9.36,52,191,350,571,912,1207,1682,2135,2684])\n",
    "\n",
    "plt.rcParams['font.size'] = 18\n",
    "plt.figure(figsize=(9,6))\n",
    "plt.bar(X, y, width=0.5, color='green') #条形图\n",
    "plt.plot(X,y, color='red') #曲线图\n",
    "_ = plt.xticks(ticks=X, rotation=60) # X轴刻度，设置成2009 - 2019"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "07d84f5e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(11,)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "array([[2009],\n",
       "       [2010],\n",
       "       [2011],\n",
       "       [2012],\n",
       "       [2013],\n",
       "       [2014],\n",
       "       [2015],\n",
       "       [2016],\n",
       "       [2017],\n",
       "       [2018],\n",
       "       [2019]])"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#转换X数据形状\n",
    "display(X.shape)\n",
    "X = X.reshape(-1,1)\n",
    "display(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "3567619b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-5],\n",
       "       [-4],\n",
       "       [-3],\n",
       "       [-2],\n",
       "       [-1],\n",
       "       [ 0],\n",
       "       [ 1],\n",
       "       [ 2],\n",
       "       [ 3],\n",
       "       [ 4],\n",
       "       [ 5]])"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 特征工程\n",
    "# 如果没有这一步，无法拟合的\n",
    "X -= np.int32(X.mean())\n",
    "# 1 表示2009,11 表示2019,12表示2020\n",
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "b6b124c9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[  -5.,   25., -125.],\n",
       "       [  -4.,   16.,  -64.],\n",
       "       [  -3.,    9.,  -27.],\n",
       "       [  -2.,    4.,   -8.],\n",
       "       [  -1.,    1.,   -1.],\n",
       "       [   0.,    0.,    0.],\n",
       "       [   1.,    1.,    1.],\n",
       "       [   2.,    4.,    8.],\n",
       "       [   3.,    9.,   27.],\n",
       "       [   4.,   16.,   64.],\n",
       "       [   5.,   25.,  125.]])"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#升维处理\n",
    "from sklearn.preprocessing import PolynomialFeatures\n",
    "\n",
    "ploy = PolynomialFeatures(degree=3, include_bias=False) #维度为3，没有截距\n",
    "X = ploy.fit_transform(X) #根据ploy训练\n",
    "display(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "4882961a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-1.58113883,  1.69841555, -2.04670663],\n",
       "       [-1.26491106,  0.67936622, -1.0479138 ],\n",
       "       [-0.9486833 , -0.1132277 , -0.44208863],\n",
       "       [-0.63245553, -0.67936622, -0.13098922],\n",
       "       [-0.31622777, -1.01904933, -0.01637365],\n",
       "       [ 0.        , -1.13227703,  0.        ],\n",
       "       [ 0.31622777, -1.01904933,  0.01637365],\n",
       "       [ 0.63245553, -0.67936622,  0.13098922],\n",
       "       [ 0.9486833 , -0.1132277 ,  0.44208863],\n",
       "       [ 1.26491106,  0.67936622,  1.0479138 ],\n",
       "       [ 1.58113883,  1.69841555,  2.04670663]])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 归一化\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "standard = StandardScaler()\n",
    "X = standard.fit_transform(X)\n",
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "cd60ca6e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>SGDRegressor(eta0=0.5, max_iter=5000)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;SGDRegressor<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.linear_model.SGDRegressor.html\">?<span>Documentation for SGDRegressor</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>SGDRegressor(eta0=0.5, max_iter=5000)</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "SGDRegressor(eta0=0.5, max_iter=5000)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# SGD建模\n",
    "from sklearn.linear_model import SGDRegressor\n",
    "\n",
    "model = SGDRegressor(fit_intercept=True, max_iter=5000, eta0=0.5)\n",
    "model.fit(X,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "f3d2ade5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-1.69774938,  1.43629836, -2.00166837],\n",
       "       [-1.62845348,  1.21518735, -1.77300591],\n",
       "       [-1.55915759,  1.00423175, -1.56486198],\n",
       "       [-1.4898617 ,  0.80343156, -1.37627202],\n",
       "       [-1.4205658 ,  0.61278678, -1.20627148],\n",
       "       [-1.35126991,  0.43229742, -1.05389583],\n",
       "       [-1.28197402,  0.26196346, -0.91818051],\n",
       "       [-1.21267813,  0.10178492, -0.79816099],\n",
       "       [-1.14338223, -0.04823821, -0.69287271],\n",
       "       [-1.07408634, -0.18810592, -0.60135113],\n",
       "       [-1.00479045, -0.31781823, -0.52263171],\n",
       "       [-0.93549455, -0.43737512, -0.45574989],\n",
       "       [-0.86619866, -0.54677661, -0.39974113],\n",
       "       [-0.79690277, -0.64602268, -0.35364089],\n",
       "       [-0.72760688, -0.73511333, -0.31648462],\n",
       "       [-0.65831098, -0.81404858, -0.28730777],\n",
       "       [-0.58901509, -0.88282842, -0.2651458 ],\n",
       "       [-0.5197192 , -0.94145284, -0.24903417],\n",
       "       [-0.4504233 , -0.98992185, -0.23800832],\n",
       "       [-0.38112741, -1.02823545, -0.23110371],\n",
       "       [-0.31183152, -1.05639364, -0.2273558 ],\n",
       "       [-0.24253563, -1.07439641, -0.22580004],\n",
       "       [-0.17323973, -1.08224378, -0.22547188],\n",
       "       [-0.10394384, -1.07993573, -0.22540678],\n",
       "       [-0.03464795, -1.06747227, -0.22464019],\n",
       "       [ 0.03464795, -1.0448534 , -0.22220757],\n",
       "       [ 0.10394384, -1.01207911, -0.21714437],\n",
       "       [ 0.17323973, -0.96914942, -0.20848604],\n",
       "       [ 0.24253563, -0.91606431, -0.19526805],\n",
       "       [ 0.31183152, -0.85282379, -0.17652583],\n",
       "       [ 0.38112741, -0.77942786, -0.15129486],\n",
       "       [ 0.4504233 , -0.69587652, -0.11861057],\n",
       "       [ 0.5197192 , -0.60216976, -0.07750843],\n",
       "       [ 0.58901509, -0.49830759, -0.02702389],\n",
       "       [ 0.65831098, -0.38429002,  0.0338076 ],\n",
       "       [ 0.72760688, -0.26011703,  0.10595057],\n",
       "       [ 0.79690277, -0.12578862,  0.19036959],\n",
       "       [ 0.86619866,  0.01869519,  0.28802919],\n",
       "       [ 0.93549455,  0.17333442,  0.39989392],\n",
       "       [ 1.00479045,  0.33812905,  0.52692832],\n",
       "       [ 1.07408634,  0.5130791 ,  0.67009694],\n",
       "       [ 1.14338223,  0.69818456,  0.83036433],\n",
       "       [ 1.21267813,  0.89344544,  1.00869503],\n",
       "       [ 1.28197402,  1.09886172,  1.2060536 ],\n",
       "       [ 1.35126991,  1.31443342,  1.42340456],\n",
       "       [ 1.4205658 ,  1.54016053,  1.66171247],\n",
       "       [ 1.4898617 ,  1.77604305,  1.92194188],\n",
       "       [ 1.55915759,  2.02208098,  2.20505734],\n",
       "       [ 1.62845348,  2.27827432,  2.51202337],\n",
       "       [ 1.69774938,  2.54462308,  2.84380455]])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#算法验证\n",
    "X_test = np.linspace(-5,6).reshape(-1,1)  #从2009到2020\n",
    "X_test = ploy.fit_transform(X_test)\n",
    "X_test = standard.fit_transform(X_test)\n",
    "X_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "07b31765",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([-162.39733483, -161.39433332, -157.87542021, -151.83181351,\n",
       "       -143.25473123, -132.13539139, -118.46501201, -102.23481109,\n",
       "        -83.43600666,  -62.05981673,  -38.0974593 ,  -11.54015241,\n",
       "         17.62088595,   49.39443775,   83.78928499,  120.81420964,\n",
       "        160.47799369,  202.78941913,  247.75726794,  295.39032212,\n",
       "        345.69736364,  398.68717449,  454.36853665,  512.75023212,\n",
       "        573.84104287,  637.6497509 ,  704.18513818,  773.45598671,\n",
       "        845.47107847,  920.23919545,  997.76911962, 1078.06963299,\n",
       "       1161.14951752, 1247.01755522, 1335.68252805, 1427.15321802,\n",
       "       1521.4384071 , 1618.54687729, 1718.48741055, 1821.2687889 ,\n",
       "       1926.89979429, 2035.38920873, 2146.7458142 , 2260.97839269,\n",
       "       2378.09572617, 2498.10659664, 2621.01978608, 2746.84407648,\n",
       "       2875.58824982, 3007.26108809])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#预测值\n",
    "y_ = model.predict(X_test)\n",
    "y_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "5e9c5080",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x190fb4b1d90>]"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 900x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(9,6))\n",
    "plt.scatter(np.arange(2009,2020),y,color = 'red')\n",
    "plt.plot(np.linspace(2009,2020),y_,color = 'green')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e2ba823d",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.6"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "255.984px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
